问题内容: 在Ubuntu上使用’gcc’编译C ++源文件时遇到一个令人费解的问题。解决了这个问题后,我想在这里发布它,以免其他人难以解决。 为了这份报告,我们将最简单的C ++“ Hello,World”程序存储在main.cpp中: 当我运行命令时: 我收到错误消息: 我确认我正在编译正确的位(即32位)。我做错了什么? 问题答案: 事实证明,我已将C ++源文件另存为UTF-16 Unic
问题内容: 假设我有一个非常简单的C文件(称为foo.c): 现在我叫gcc: 当我调用gcc时(如上例所示,没有选项),默认情况下链接了哪些库,它们位于何处?(在Mac OS X 10.7上) 问题答案: 该选项将导致它倾倒它会使用包括图书馆的路径和默认的库文件和目标文件将在被链接的默认选项的信息。 如果提供该选项,则gcc会将传递给链接器,该链接器将准确地转储其在查找库的位置,包括失败和成功搜
问题内容: 我们有一个新的应用程序,需要glibc 2.4(来自gcc 4.1)。我们运行的机器具有gcc 3.4.6。我们无法升级,并且应用程序必须在此计算机上运行。 我们安装了gcc 4.1,但是在编译时,它使用的是3.4.6中的所有include等。 我们如何解决这个问题? 关于仅将此应用程序使用4.1的任何建议? 问题答案: 请参阅“如何安装GCC的多个版本” 这里的GNU GCC FAQ
问题内容: 今天,每个现代OS都提供一些原子操作: Windows具有API FreeBSD有 Solaris有 Mac OS X具有 像Linux一样的东西吗? 我需要它在大多数Linux支持的平台上工作,包括:x86,x86_64和 arm 。 我至少在GCC和Intel编译器上需要它。 我不需要使用像glib或qt这样的3rd par库。 我需要它才能在C ++中工作(不需要C) 问题: G
问题内容: 因此,当我们执行以下操作时: 与 编译器(在我的情况下为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上运行的客户端-服务器体系结构。有没有可以简化此任务的库?有人可以举个例子吗? 问题答案: 最可移植的解决方案是读取文件,然后以循环方式将数据写到套接字中(同样,接收文件时也采用另一种方法)。您可以在该缓冲区中分配一个缓冲区,并从该缓冲区中将其分配到您的套接字中(您也可以使用和,这是套接字特定的写入和读取数据的方式