0

我的一个用户在尝试使用 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 处理这个特定文件来解决问题,但我想解决真正的问题。)

4

2 回答 2

0

为什么 gcc 尝试将其编译为 c++

我只能想到两种似是而非的解释,它们都是最终用户的错。

  • 有可能是用户通过windows传输源文件,文件名是真的C_DATABLOCK_TEST.C,用户误导了你。
  • 也可能是用户改写了他gcc的(令人惊讶的是,g++很多人都相信这是同一件事,但事实并非如此)。gccg++

要反驳第一种可能性,请让用户在 下执行他的构建命令script,并将结果发送给您typescript

要反驳第二个,请要求用户添加-v到编译命令。

于 2014-06-02T03:45:50.493 回答
-1

这看起来像 GCC 错误 54641,已在更高版本的 GCC 中修复。这只是一个警告,但您的编译标志导致 GCC 将所有警告视为错误。

于 2014-05-30T11:01:37.607 回答