我正在尝试为 c++ 程序同时链接 32 位和 64 位 .so 文件。我使用的是 64 位 Ubuntu 12.04.1 我也没有要重新编译的源文件。
当我运行 g++ 命令时:
g++ onlineTraining.cpp -I /usr/local/MATLAB/R2012a_Student/extern/include/ -L /home/forest/SoarSuite/out/ -L /usr/local/MATLAB/R2012a_Student/bin/glnx86/ -I /home/森林/SoarSuite/out/include -leng -lmat -lmex -lut -lSoar
我得到以下输出,因为它无法识别 32 位 .so 文件:
/usr/bin/ld:搜索-leng时跳过不兼容的/usr/local/MATLAB/R2012a_Student/bin/glnx86//libeng.so /usr/bin/ld: 找不到 -len /usr/bin/ld:搜索-lmat时跳过不兼容的/usr/local/MATLAB/R2012a_Student/bin/glnx86//libmat.so /usr/bin/ld: 找不到 -lmat /usr/bin/ld:搜索-lmex时跳过不兼容的/usr/local/MATLAB/R2012a_Student/bin/glnx86//libmex.so /usr/bin/ld: 找不到 -lmex /usr/bin/ld:搜索-lut时跳过不兼容的/usr/local/MATLAB/R2012a_Student/bin/glnx86//libut.so /usr/bin/ld: 找不到 -lut collect2: ld 返回 1 个退出状态
当我使用 -m32 运行 g++ 命令时:
g++ -m32 onlineTraining.cpp -I /usr/local/MATLAB/R2012a_Student/extern/include/ -L /home/forest/SoarSuite/out/ -L /usr/local/MATLAB/R2012a_Student/bin/glnx86/ -I /家/森林/SoarSuite/out/include -leng -lmat -lmex -lut -lSoar
我得到以下输出,因为现在它无法识别 64 位 .so 文件:
/usr/bin/ld: 搜索 -lSoar 时跳过不兼容的 /home/forest/SoarSuite/out//libSoar.so /usr/bin/ld: 找不到 -lSoar /usr/bin/ld:在搜索 -lstdc++ 时跳过不兼容的 /usr/lib/gcc/x86_64-linux-gnu/4.6/libstdc++.so /usr/bin/ld:在搜索 -lstdc++ 时跳过不兼容的 /usr/lib/gcc/x86_64-linux-gnu/4.6/libstdc++.a /usr/bin/ld: 找不到 -lstdc++ collect2: ld 返回 1 个退出状态
是否可以同时链接 34 位和 64 位 .so 文件?谢谢你。