compiler-flags相关内容
当我使用 -Og 选项使用 g++ 编译我的 C++ 程序时,我看到了 的变量,而且当前行有时会跳过.这种优化级别的行为是预期的,还是我有一些问题?gcc 的手册页说: -Og 优化调试体验.-Og 启用不干扰调试的优化.它应该是标准编辑-编译-调试周期的首选优化级别,提供合理的优化级别,同时保持快速编译和良好的调试体验. 因此我没想到会出现这种行
..
我从各种来源(尽管主要来自我的一位同事)听说,在 g++ 中使用 -O3 的优化级别进行编译在某种程度上是“危险的",通常应该避免,除非证明是必要的. 这是真的吗?如果是,为什么?我应该坚持使用 -O2 吗? 解决方案 在早期的gcc(2.8等)和egcs的时代,redhat 2.96 -O3有时会出现很多bug.但这是十多年前的事了,-O3 与其他级别的优化(在错误方面)没有太大区
..
我的构建要求我发出以下命令: $ g++ sniff.cpp -o sniff -lcrafter 但是,在我的 Eclipse 构建中,编译器得到的只是: g++ -o "sniffer_crafter" ./src/sniffer_crafter.o 收到这些命令后,它抱怨我有一个未定义的对库 Crafter 的引用. 如何使用 Eclipse 解决此链接问题?我见过其他人对类似
..
我们正在使用第三方静态库,比如说 A.a 用于 android 开发.我们将其链接为共享库,它在一个 App 中运行良好,但是当使用 B.so 构建另一个 C.so 时,Aa 找不到.我们已经使用 -Wl,--export-dynamic 和 -Wl,--whole-archive 来构建 B.so.我们已经使用nm来检查那些符号,它存在但列为“t"而不是“T",这意味着它是本地符号而不是外部.A
..
我试图了解在使用 gcc 编译 C 代码时 -pg(或 -p)标志是如何工作的. 官方 gcc 文档仅说明: -pg 生成额外的代码来编写适合分析程序 gprof 的配置文件信息.编译需要数据的源文件时必须使用此选项,链接时也必须使用它. 这真的让我很感兴趣,因为我正在做一个关于分析器的小型研究 - 试图为这项工作挑选最好的工具. 解决方案 使用 -pg 编译您的代码,以便
..
在 Xcode 5 之前,可以使用默认构建设置阻止发布构建包含 NSAssert 语句及其变体: OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; 此设置可以在 project.pbxproj 中找到,并在此处的 Xcode 中设置: (请注意,此图片取自已转换为 Xcode 5 的 Xcode 4 项目.) 每个目标将仅在发布版本中继承此设置.显
..
我将 CMake 用于一个有两个版本的项目,其中一个需要 -lglapi,另一个不需要. 到目前为止,我们使用的行看起来像这样: SET(CMAKE_C_FLAGS "-O3 -xSSE3 -restrict -lpthread -lX11 -ldrm")SET(CMAKE_CXX_FLAGS "-O3 -xSSE3 -restrict -lpthread -lX11 -ldrm") 我
..
我的 CMakeLists.txt 中有以下内容: 项目( Matfile )设置(CMAKE_CXX_FLAGS“-std=c++0x")设置(源“foo.cpp"“bar.cpp")添加库(矩阵文件${SOURCES}) 正如您想象的那样,我想要做的是使用标志 -std=c++0x 编译我的 C++ 源代码(我正在使用 gcc 并且我需要 C++11 功能).不幸的是,这不起作用,因为当我
..
我目前正在学习 OpenCL.现在,当我想编译我的程序时,我收到以下命令的错误: g++ -Wall -l OpenCL main.cpp -o main 错误大多是未定义的引用,因为库没有链接,我想(不过我会在最后贴出错误代码). 但是使用这个命令一切正常: g++ -Wall main.cpp -o main -l OpenCL 所以我的问题是,我该怎么做才能在命令前面使用 -l
..
我从各种来源(尽管主要来自我的同事)听说,在 g++ 中以 -O3 的优化级别进行编译在某种程度上是“危险的",一般应该避免,除非被证明是必要的. 这是真的吗,如果是,为什么?我应该坚持使用 -O2 吗? 解决方案 在 gcc 的早期(2.8 等)和 egcs 时代,redhat 2.96 -O3 有时会出现很多问题.但这是十多年前的事了,-O3 与其他级别的优化(在错误方面)没有太
..
我正在使用 C 执行矩阵运算.我想知道哪些编译器优化标志可以提高双精度和 int64 数据的这些矩阵运算的执行速度 - 如乘法、逆等.我不是在寻找手动优化代码,我只想使用编译器标志使本机代码更快,并了解有关这些标志的更多信息. 到目前为止我发现的可以改进矩阵代码的标志. -O3/O4-funroll-loops-ffast-数学 解决方案 首先,我不推荐使用-ffast-math,原因
..
我想知道您传递给 gcc 编译器的哪个开关可以关闭未使用的变量警告?我在 Windows 上遇到 boost 错误,我不想触及 boost 代码: C:\boost_1_52_0/boost/system/error_code.hpp:在全局范围内:C:\boost_1_52_0/boost/system/error_code.hpp:214:36: 错误:'boost::system::pos
..
除了设置 -Wall 和设置 -std=XXX 之外,还有哪些其他真正有用但鲜为人知的编译器标志可用于 C 中? 我对任何其他警告和/或在某些情况下将警告转化为错误特别感兴趣,以绝对减少任何意外的类型不匹配. 解决方案 几个 -f 代码生成选项很有趣: -fverbose-asm 如果您使用 -S 进行编译以检查程序集输出,则非常有用 - 它添加了一些信息性注释. -fi
..
__attribute__((always_inline)) 是否强制 gcc 内联函数? 解决方案 是. 来自 文档 v4.1.2 来自文档最新 always_inline 通常,除非指定优化,否则不会内联函数.对于声明为内联的函数,即使未指定优化级别,该属性也会内联函数.
..
我正在使用 GCC 4.3 编译我的 C++ 应用程序.我使用 -march=native 而不是手动选择优化标志,理论上应该添加适用于我正在编译的硬件的所有优化标志.但是我如何检查它实际使用了哪些标志? 解决方案 您可以使用 -Q --help=target 选项: gcc -march=native -Q --help=target ... -v 选项也可能有用. 您可以查看
..
在持续收到 error : identifier "atomicAdd" is undefined 之后,我找到了使用 -arch sm_20 标志编译的解决方案.但是如何在 VS 2010 中传递这个编译器标志呢?我在 Project > 下尝试过这样的尝试属性: 但这显然没有效果,错误仍然存在 - 我做错了什么? 非常感谢. 解决方案 您可以在此对话框中选择 GPU 代
..
编译多线程程序时使用的gcc -pthread和gcc -lpthread有什么区别? 解决方案 -pthread 告诉编译器链接 pthread 库并配置线程的编译. 例如,以下显示了在我的 Ubuntu 机器上安装的 GCC 包上使用 -pthread 选项时定义的宏: $ gcc -pthread -E -dM test.c >dm.pthread.txt$ gcc -E -
..
我需要在命令行上编译一个 Java 程序,我试图将编译器级别设置为较低的级别 (1.6).我这样试过,但没有用: javac -1.6 Hello.java 解决方案 使用 -source 和 -target 选项: javac -target 1.6 -source 1.6 Hello.java
..
这对我来说似乎很明显,但我找不到任何解决方案.假设我想添加或更改适用于所有 yocto 配方的编译器标志/选项.可以在某处添加全局标志而不更改配方吗? 解决方案 您可以在 poky/meta/conf/bitbake.conf 中为 Yocto 构建添加全局编译器选项.添加选项后,使用命令bitbake -e 检查bitbake环境 cat poky/meta/conf/bitbake
..
使用 Xcode 4.2 和 LLVM 编译器,在为 ARMv6 编译时,生成的应用程序中存在一些非常奇怪的错误(例如 CGSize 的“宽度"属性返回“高度").为了解决这个问题,我发现我必须设置编译器标志 -mno-thumb.我知道如何逐个文件地设置编译器标志,但有没有办法为整个项目设置编译器标志? 解决方案 您可以在“构建设置"选项卡的“语言"部分下的项目设置中设置项目范围的编译器
..