转换到 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
链接器抱怨的:
架构 x86_64 的未定义符号:“load_dmat(char const*)”,引用自:layoutquality-I8HOqy.o ld 中的 _main:未找到架构 x86_64 的符号
whereload_dmat
只是文件 vec.c 中的一个函数。如果我在第一行替换了gcc
with ,那么一切都可以编译和链接,但是 clang 说:g++
clang:警告:在 C++ 模式下将“c”输入视为“c++”,不推荐使用此行为
是否有一种无害的、不被弃用的编译和链接方式?g++
在我升级到 OS X Mavericks 和新的命令行工具之前,与来自目标文件的链接gcc
工作得很好。任何有关发生了什么变化以及如何前进的见解都会很棒,谢谢。