我的一个用户在尝试使用 gcc 4.8.1 在 ubuntu 12.04 上编译我们的混合 C/C++ 代码库的 C 部分时收到错误消息
我们有一个 C++ 库,其中包含一些 C 链接函数,并且想要编译一个链接到它的 C 程序。该库是用 g++ 编译的并且构建良好。c 程序失败如下:
> gcc -O3 -g -fPIC -I/media/Repo/lcdm/code/cosmosis/ -Wall -Wextra -pedantic -Werror -std=c99 -o c_datablock_t c_datablock_test.c -L . -lcosmosis
cc1plus: error: command line option ‘-std=c99’ is valid for C/ObjC but not for C++ [-Werror]
该程序有一个小写的 .c 文件后缀,那么为什么 gcc 会尝试将其编译为 c++ 呢?我们还没有在其他操作系统上看到这一点。
(我知道我们可以通过删除 -Werror 或使用 -xc 处理这个特定文件来解决问题,但我想解决真正的问题。)