ld: /mnt/d/Code/fortranRWRC/libReadWrite_c.so: undefined reference to `_binary_TEST_DATJ_start'
时间: 2023-08-11 11:05:12 浏览: 56
这是一个链接错误,意思是在链接 libReadWrite_c.so 文件时,找不到 `_binary_TEST_DATJ_start' 符号的定义。这个符号通常是由 objcopy 命令生成的,用于将二进制文件中的数据导入到目标文件中。可能的原因是:在编译 ReadWrite_f.o 时,没有使用正确的 objcopy 命令将 TEST.DATJ 转换成目标文件,或者链接参数顺序不正确导致编译器无法正确解析符号引用关系。可以检查编译和链接的命令行参数是否正确,并确保 objcopy 生成的目标文件已经正确地被链接到了可执行文件中。
相关问题
ifort ReadWrite_f.o -L/opt/test/lib /mnt/d/Code/fortranRWRC/libReadWrite_c.so -o LocalTisktest什么意思
这是一个 Intel Fortran 编译命令,用于将目标文件 ReadWrite_f.o 和共享库文件 libReadWrite_c.so 进行链接,并生成可执行文件 LocalTisktest。其中 ifort 表示使用 Intel Fortran 编译器,-L/opt/test/lib 表示将 /opt/test/lib 目录加入链接库搜索路径,/mnt/d/Code/fortranRWRC/libReadWrite_c.so 是要链接的共享库文件,-o 指定生成的可执行文件名为 LocalTisktest。
fortranRW ifort ReadWrite.o -L/opt/test/lib /mnt/d/Code/fortranRW/libReadWrite.so -o LocalTisktest ld: /opt/intel/oneapi/compiler/2022.0.2/linux/bin/intel64/../../compiler/lib/intel64_lin/for_main.o: in function `main': for_main.c:(.text+0x2e): undefined reference to `MAIN__'
这个错误提示是在链接可执行文件时出现的。它表明链接器无法找到一个叫做 `MAIN__` 的符号,这个符号是由 Fortran 编译器生成的,用于标识 Fortran 程序的入口点。
解决这个问题的方法是在链接命令中添加一个 Fortran 运行时库,这个库包含了 `MAIN__` 符号的定义。根据你的编译器和操作系统不同,这个库的名称和路径可能会有所不同。你可以使用以下命令在链接命令中添加这个库:
```
fortranRW ifort ReadWrite.o -L/opt/test/lib /mnt/d/Code/fortranRW/libReadWrite.so -L/path/to/fortran/runtime -lfortran -o LocalTisktest
```
在这个命令中,`-L/path/to/fortran/runtime` 选项指定 Fortran 运行时库的路径,`-lfortran` 选项则指定要链接的库的名称。你需要将这些选项替换为你的系统上实际的 Fortran 运行时库的路径和名称。
如果你不知道 Fortran 运行时库的名称和路径,可以查看你的 Fortran 编译器的文档或者搜索一下你的操作系统上的默认库路径。
阅读全文