基本上,我想运行一个 .cpp 并链接几个 .a 文件和 gcc、fortran。命令如下
g++ -L/Users/myhome/Ipopt-3.10.0/build/lib -lipopt -L/Users/myhome/lcoinmumps -lpthread -framework vecLib -L/Developer/usr/llvm-gcc-4.2/lib/gcc/i686 -apple-darwin11/4.2.1 -L/usr/local/gfortran/lib -lgfortran -lgcc_static -lcc_kext -lgcc -lSystem -framework vecLib -framework vecLib -lm -ldl -o cpp_example cpp_example.cpp
错误显示为
ld:警告:ld:警告:忽略文件/Developer/usr/llvm-gcc-4.2/lib/gcc/i686-apple-darwin11/4.2.1/libgcc_static.a,文件是为存档而构建的,这不是架构链接(x86_64):/Developer/usr/llvm-gcc-4.2/lib/gcc/i686-apple-darwin11/4.2.1/libgcc_static.a 忽略文件/Developer/usr/llvm-gcc-4.2/lib/gcc/ i686-apple-darwin11/4.2.1/libgcc.a,文件是为存档而构建的,它不是被链接的架构(x86_64):/Developer/usr/llvm-gcc-4.2/lib/gcc/i686-apple-darwin11 /4.2.1/libgcc.a
架构 x86_64 的未定义符号:“MyNLP::MyNLP()”,引用自:ccY99KRH.o 中的 _main ld:未找到架构 x86_64 的符号 collect2:ld 返回 1 个退出状态
如粗体文本所示,错误似乎是我在 32 位内核或 CPU 上运行。但是我使用的是 x86_64:我已经根据此处更改了 boost.plist,并且“关于 mac”清楚地证明了我现在使用的硬件和软件都是 64 位的。
这里似乎已经解释了mac架构(?)以某种方式无法识别64位。
但是当我将文件(.a .cpp .h)添加到 Xcode 并一起运行项目时,它工作正常。
任何人都知道为什么命令行不起作用?为什么我的 libgcc(i686-apple-darwin11-llvm-gcc-4.2) 无法识别为 64 位版本?最重要的是,如何让命令发挥作用?
顺便说一句,我的系统是狮子 10.7.4