问题标签 [cc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
467 浏览

compiler-construction - Solaris 5-10 CC 编译器缺少符号错误导致链接失败

可能重复:
Solaris 10 CC 预处理器错误导致未定义符号

如果这个问题发布看起来很熟悉,我深表歉意。我昨天在这里发布了这个问题:Solaris 10 CC 预处理器错误导致未定义符号。但是,我添加了一些仅出现在这篇文章中的更多澄清信息(我从昨天开始了解到的)。

我有一个非常简单的 C++ 文件,如下所示,我正在使用 CC 编译器在 Solaris 5-10 上进行编译。这是我的文件 myTest.C 中的源代码:

我想首先在这个文件上运行 CC 预处理器,检查预处理文件,然后将该预处理文件编译成目标文件。我称之为“间接编译”。为此,我执行以下操作:

我还想编译这个文件,而不像通常那样进行单独的预处理步骤。我称之为“直接编译”。为此,我执行以下操作:

理论上,myFile_direct.o 和 myFile_indirect.o 在功能上应该是等效的。它们当然应该在各自的符号表中包含相同数量的符号,对吧?因此,让我们检查一下它们的符号:

令人惊讶的是,直接编译的目标文件包含 12 个在间接编译的文件中不存在的符号。为什么?这对我来说似乎是一个严重的错误。为什么间接编译的文件中没有这些符号?如果它们是不必要的,为什么将它们包含在直接编译的文件中?直接编译不应该先做同样的预处理,然后对用户隐藏它吗?这里发生了什么?

您可以看到这些缺失的符号阻止了间接编译的目标文件的最终链接。但是直接编译的目标文件链接就好了:

PS。我不认识十二个额外的符号,也不明白它们的目的是什么:

0 投票
2 回答
15552 浏览

c - C将char与“\ n”进行比较警告:指针和整数之间的比较

我有以下 C 代码部分:

在编译期间,编译器告诉我

问题是,如果替换"\n"'\n'根本没有警告。谁能解释一下原因?另一个奇怪的事情是我根本没有使用指针。

我知道以下问题

但在我看来,它们与我的问题无关。

PS。如果不是char c会有int c,仍然会有警告。

0 投票
2 回答
212 浏览

linker - 链接 Python 模块:链接 `ld` 和 `cc` 的区别

这有效:

这不起作用:

在这两种情况下,我都没有收到任何编译器/链接错误。但是,当尝试导入它时,我收到此错误:

为什么?这两种方法有什么区别吗?有什么区别?

0 投票
1 回答
1481 浏览

debugging - gdb找不到cc编译的源文件

我有一个源文件 testcc.c,它只打印一个“Hello, World”,我用 cc 编译它,如下所示

当我运行它时它工作正常。现在我想使用以下命令使用 gdb 对其进行调试。

我可以看到 gdb 的输出。

GDB 是免费软件,欢迎您在特定条件下分发它的副本;键入“显示复制”以查看条件。GDB 绝对没有任何保证;键入“显示保修”以获取详细信息。GDB 4.16 (sparc-sun-solaris2.6),版权所有 1996 Free Software Foundation, Inc...

但是,当我尝试在第 5 行设置断点时,我收到以下消息

问题是 /home/users/xxx/C 是我当前的工作目录,而不是源文件!

然后,我尝试使用 file:line-number 选项

因此,我包含文件名的完整路径,如下所示

我一头雾水,文件在那里,为什么gdb找不到呢?我也尝试在启动gdb时指定目录来搜索源文件

它仍然无法正常工作,有什么问题?

0 投票
1 回答
6248 浏览

gcc - 无法在 ubuntu 中编译 cc、gcc | 没有相应的文件和目录

在这方面真的需要帮助。当我尝试使用 cc 编译时,它显示

但所有必要的文件 cc、gcc、c++ 都存在于 /usr/bin 目录中。我尝试安装 gcc-multilib 包,之后出现此错误。需要尽快修复它,因为它运行一些重要的程序。当我这样做时:update-alternatives --list cc它显示了/usr/bin/gcc。然后我尝试 update-alternatives --set cc /usr/bin/gcc了,它给了 update-alternatives: warning: forcing reinstallation of alternative /usr/bin/gcc because link group cc is broken. update-alternatives: warning: not replacing /usr/bin/cc with a link.

0 投票
1 回答
4721 浏览

gcc - GCC,-W1 是什么意思

我有一个使用 -W1 参数的遗留 Makefile,我没有找到任何引用,我认为这可能是一个错字,'1' 应该是 'l'。但是,它有效......那么,任何人都可以解释为什么这条线有效吗?

$(CC) 是 GCC,编译出来的文件是 C 文件。当我尝试使用此命令编译 CPP 文件时,我才得到

0 投票
2 回答
667 浏览

c - 使用 Cygwin 的 MPICH2 编译问题

尝试使用 Cygwin 在 Windows 机器上编译 MPICH2。

一点相关资料

  • $ uname -> CYGWIN_NT-6.1
  • $ gcc --version -> gcc (GCC) 3.4.4 (cygming special, gdc 0.12, using dmd 0.125) 版权所有 (C) 2004 Free Software Foundation, Inc. 这是免费软件;查看复制条件的来源。没有保修;甚至不考虑适销性或特定用途的适用性。
  • MPICH2 版本:1.5

配置似乎已正确完成,但在编译期间我收到以下信息:

检查“dbxerr.c”我发现:

通过检查'config.log'我发现:

这证实了:

正被 CPP 使用。

我发现'SIG_HANDLER_PROTOTYPE'被定义为:

'sighandler_t' 在 '/usr/include/signal.h' 中定义为:

最后,'_sig_func_ptr' 定义为:

这是就我自己的研究而言,我似乎无法将各个部分组合在一起。我不明白为什么会有原型不匹配。我将继续尝试自己解决此问题,但我们将不胜感激!

提前致谢!

更新:

我正在重新检查“make”的输出,我认为我犯了一个错误。我认为问题出在声明上:

但是,问题似乎与定义有关:

'sig' 似乎是一个 int 类型,但我不明白 'SIG_HANDLER_PROTOTYPE' 是什么类型。有人可以解释一下吗:

0 投票
0 回答
310 浏览

shared-libraries - 使用或不使用 -c 编译共享库

我正在将 ac 程序编译为要导入Ctypes到 python 中的共享库。这些是我遵循的步骤:

制作共享库时建议不要使用-c,因为编译后不会链接(我在这里的一些帖子上看到过,我得到链接后会发布链接)。但我注意到,当我删除时-c,会弹出这些错误:

所以我添加-c了,错误消失了。另外,我也可以从 ctypes 导入库,没有任何问题。以后会不会惹麻烦?

使用或不使用 -c 进行编译时会出现哪些问题?

0 投票
3 回答
714 浏览

c - 为什么这个 perror 的输出?

我以前从未见过:

在此处输入图像描述

上面的左下角是什么?该程序的最新版本是

测试

以下重现了奇怪的输出:

更新

clang 编译器会发出警告,但不会 (g)cc:

0 投票
2 回答
90 浏览

c - 如何指定目标文件的名称

当我直观地尝试运行这样的命令时

抛出以下错误

cc: 不能用 -c 指定 -o,不能用 -S 或 -E 指定多个文件