问题内容: 因此,当我们执行以下操作时: 与 编译器(在我的情况下为GCC)知道stdio.h(甚至是目标文件)在我的硬盘上的位置。它只是利用文件,而没有我的参与。 我 认为 在我的Ubuntu Linux机器上,文件存储在。 编译器如何知道在哪里寻找这些文件? 这是可配置的还是仅仅是预期的默认值?我在哪里寻找这种配置? 由于我要问这些包含文件的问题,这些文件的来源是什么? 我知道这在Linux社
问题内容: 在toUpper函数中,返回类型为char,但是toUpper()中没有“ return”。并使用gcc(GCC)4.5.1 20100924(Red Hat 4.5.1-4),fedora-14编译源代码。 当然,会发出警告:“警告:控制到达非无效功能的尽头”,但是效果很好。 用gcc编译期间该代码中发生了什么?在这种情况下,我想得到一个可靠的答案。谢谢 :) 问题答案: 您遇到的是
问题内容: 我正在编译一些在Debian Linux系统上使用libcurl的代码。我的开发机正在运行Debian 5,但我也希望二进制文件也可以在较旧的Debian 4系统上使用。 我发现如果指定 -lcurl ,它将链接到libcurl.so.4,但是Debian 4系统仅具有libcurl.so.3 有什么方法可以告诉GCC链接到libcurl.so.3(在Debian 4和5中都存在)还是
问题内容: 是否有一组命令行选项可以说服gcc从自包含的源文件生成平面二进制文件?例如,假设foo.c的内容是 没有外部引用,没有要导出到链接器的内容。我想获得一个仅带此功能机器说明的小文件,而无需任何其他装饰。有点像(DOS).COM文件,但32位保护模式除外。 问题答案: 试试看: 您可以使用来确保它是正确的: 并与二进制文件进行比较:
问题内容: 即使使用标志,我也无法禁用它。如何禁用它? 问题答案: 您可以使用编译器标志为可变长度数组生成错误:
问题内容: 我正在编写一个使用librt的小型C程序。如果将链接标志放在开头而不是结尾,程序将无法编译,我感到很惊讶: 此刻,我要编译程序: 如果执行以下操作,它将无法在librt中找到函数: 但是,这可以与其他库一起使用。我在尝试使用简单的Makefile时发现了问题。进行实际编译的prog.c而不先喜欢(使用-c标志),然后进行链接。 这是Makefile: 键入make时,我得到的输出将是:
问题内容: 我已经在已经具有gcc / g -4.4的ubuntu 11.04上安装了gcc-3.3 / g -3.3。所以在我的系统中gcc-3.3和4.4都可用。我可以根据需要调用两个编译器。如果我只是调用命令,那么将调用gcc-4.4。要调用gcc-3.3,我必须使用命令。 如何将默认编译器更改为gcc-3.3?当我执行命令时,它应该调用gcc-3.3而不是gcc-4.4。 另外,如何将ma
问题内容: 很快我将开始使用共享内存研究并行版本的网格细化算法。 该大学的一位教授指出,我们必须非常小心线程安全,因为编译器和stl都不知道线程。 我搜索了这个问题,答案取决于编译器(有些尝试是对线程 有所 了解的)和平台(如果编译器使用的系统调用是否是线程安全的)。 那么,在Linux中,gcc 4编译器会为新运算符生成线程安全代码吗? 如果不是,克服此 问题 的最佳方法是什么?也许将每个呼叫锁
问题内容: 我碰到了一个他们用的。 该文件说: 内置功能: 您可以用来向编译器提供分支预测信息。通常,您应该更喜欢为此()使用实际的配置文件反馈,因为众所周知,程序员在预测其程序的实际执行效果方面很差。但是,在有些应用程序中很难收集此数据。 返回值是的值,应为整数表达式。内置的语义是预期的 。例如: 表示我们不希望调用,因为我们希望为零。 那么为什么不直接使用: 而不是复杂的语法? 问题答案: 想
问题内容: 我正在尝试在Linux上安装gcc和g ++ 4.9.2。我是Linux的新手,我看到了一些安装指南,但是每次遇到另一个问题时,我都会看到。我的机器上现在没有任何gcc。我的Linux版本是:Red Hat Enterprise Linux Server 7.4(Maipo)有人可以帮助我,并从头到尾给我说明如何正确执行此操作吗?非常感谢你。 问题答案: RHEL带有预配置的存储库,您
问题内容: 我想使用能够发送和接收文件的套接字和C / C ++语言实现在Linux上运行的客户端-服务器体系结构。有没有可以简化此任务的库?有人可以举个例子吗? 问题答案: 最可移植的解决方案是读取文件,然后以循环方式将数据写到套接字中(同样,接收文件时也采用另一种方法)。您可以在该缓冲区中分配一个缓冲区,并从该缓冲区中将其分配到您的套接字中(您也可以使用和,这是套接字特定的写入和读取数据的方式
问题内容: 是否有可能编译项目在 32位 与和一对 64位 系统?可能是,但是我该怎么做呢? 当我以“无知”的方式尝试它时,没有设置任何参数/ flags / etc,只是设置在其中查找链接的库似乎忽略了它,而只查看名为 lib64的 子目录。 问题答案:
问题内容: 如何在gcc中静态链接共享库函数? 问题答案: 参考: http://www.linuxquestions.org/questions/linux-newbie-8/forcing-static- linking-of-shared- libraries-696714/ http://linux.derkeiler.com/Newsgroups/comp.os.linux.develo
问题内容: 当我使用gcc编译非常简单的源文件时,不必指定标准包含文件(例如stdio或stdlib)的路径。 GCC如何知道如何找到这些文件? 它内部是否具有硬连线的路径,还是会从其他OS组件获取路径? 问题答案: 为了弄清楚/ 所使用的默认路径及其优先级,您需要检查以下命令的输出: 对于 C : 对于 C ++ : 这归功于 Qt Creator团队 。
问题内容: 有人知道如何使用GCC将任何资源文件静态地直接编译到可执行文件或共享库文件中吗? 例如,我想要添加永不更改的图像文件(如果更改,则无论如何我都必须替换该文件),并且不希望它们位于文件系统中。 如果这是可能的(我认为是因为Windows的Visual C ++也可以这样做),如何加载存储在自己的二进制文件中的文件?可执行文件会自行解析,查找文件并从中提取数据吗? 也许我还没有看到GCC的