转换到OS X Mavericks和XCode 5.0.1之后,我再也不能优雅地将已编译的C文件(从gcc输出)链接到C++项目(从g ++输出).
从我的makefile生成的令人讨厌的命令对是:
gcc `pkg-config --cflags glib-2.0` -g -Wall -O3 `pkg-config --cflags flann` -c -o vec.o vec.c
g++ `pkg-config --cflags glib-2.0` -g -Wall -O3 -stdlib=libstdc++ -lstdc++ layoutquality.cpp vec.o `pkg-config --libs glib-2.0` -L/usr/local/Cellar/flann/1.8.4/lib -lflann -o layoutquality
Run Code Online (Sandbox Code Playgroud)
链接器抱怨的是:
体系结构x86_64的未定义符号:"load_dmat(char const*)",引用自:layoutquality中的_main-I8HOqy.o ld:未找到体系结构x86_64的符号
哪里load_dmat只是文件vec.c中的一个函数.如果我在第一行中替换了gccwith g++,那么所有内容都会编译并链接正常,但是clang说:
clang:警告:在C++模式下将'c'输入视为'c ++'时,不推荐使用此行为
是否有一种无害的,不推荐的编译和链接方式?与链接g++与目标文件一起gcc工作的罚款之前,我升级到OS X小牛和新的命令行工具.任何有关变化和如何前进的见解都会很棒,谢谢.