compiler-flags相关内容

使用 g++ 和 -Og 选项优化的变量

当我使用 -Og 选项使用 g++ 编译我的 C++ 程序时,我看到了 的变量,而且当前行有时会跳过.这种优化级别的行为是预期的,还是我有一些问题?gcc 的手册页说: -Og 优化调试体验.-Og 启用不干扰调试的优化.它应该是标准编辑-编译-调试周期的首选优化级别,提供合理的优化级别,同时保持快速编译和良好的调试体验. 因此我没想到会出现这种行 ..
发布时间:2022-01-23 20:32:19 C/C++开发

g ++中的优化级别-O3危险吗?

我从各种来源(尽管主要来自我的一位同事)听说,在 g++ 中使用 -O3 的优化级别进行编译在某种程度上是“危险的",通常应该避免,除非证明是必要的. 这是真的吗?如果是,为什么?我应该坚持使用 -O2 吗? 解决方案 在早期的gcc(2.8等)和egcs的时代,redhat 2.96 -O3有时会出现很多bug.但这是十多年前的事了,-O3 与其他级别的优化(在错误方面)没有太大区 ..
发布时间:2022-01-23 20:16:07 C/C++开发

Eclipse 中的编译器标志

我的构建要求我发出以下命令: $ g++ sniff.cpp -o sniff -lcrafter 但是,在我的 Eclipse 构建中,编译器得到的只是: g++ -o "sniffer_crafter" ./src/sniffer_crafter.o 收到这些命令后,它抱怨我有一个未定义的对库 Crafter 的引用. 如何使用 Eclipse 解决此链接问题?我见过其他人对类似 ..
发布时间:2022-01-11 15:45:51 Java开发

有没有办法在链接时覆盖 -fvisibility=hidden ?

我们正在使用第三方静态库,比如说 A.a 用于 android 开发.我们将其链接为共享库,它在一个 App 中运行良好,但是当使用 B.so 构建另一个 C.so 时,Aa 找不到.我们已经使用 -Wl,--export-dynamic 和 -Wl,--whole-archive 来构建 B.so.我们已经使用nm来检查那些符号,它存在但列为“t"而不是“T",这意味着它是本地符号而不是外部.A ..
发布时间:2022-01-11 15:45:12 移动开发

gcc 的 -pg 标志如何工作?

我试图了解在使用 gcc 编译 C 代码时 -pg(或 -p)标志是如何工作的. 官方 gcc 文档仅说明: -pg 生成额外的代码来编写适合分析程序 gprof 的配置文件信息.编译需要数据的源文件时必须使用此选项,链接时也必须使用它. 这真的让我很感兴趣,因为我正在做一个关于分析器的小型研究 - 试图为这项工作挑选最好的工具. 解决方案 使用 -pg 编译您的代码,以便 ..
发布时间:2022-01-04 21:29:26 其他开发

Xcode 5 相当于构建设置中的 NS_BLOCK_ASSERTIONS

在 Xcode 5 之前,可以使用默认构建设置阻止发布构建包含 NSAssert 语句及其变体: OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; 此设置可以在 project.pbxproj 中找到,并在此处的 Xcode 中设置: (请注意,此图片取自已转换为 Xcode 5 的 Xcode 4 项目.) 每个目标将仅在发布版本中继承此设置.显 ..
发布时间:2021-12-28 20:09:10 移动开发

附加到 CMAKE_C_FLAGS

我将 CMake 用于一个有两个版本的项目,其中一个需要 -lglapi,另一个不需要. 到目前为止,我们使用的行看起来像这样: SET(CMAKE_C_FLAGS "-O3 -xSSE3 -restrict -lpthread -lX11 -ldrm")SET(CMAKE_CXX_FLAGS "-O3 -xSSE3 -restrict -lpthread -lX11 -ldrm") 我 ..
发布时间:2021-12-26 22:02:54 C/C++开发

在项目中更改 CMAKE_CXX_FLAGS

我的 CMakeLists.txt 中有以下内容: 项目( Matfile )设置(CMAKE_CXX_FLAGS“-std=c++0x")设置(源“foo.cpp"“bar.cpp")添加库(矩阵文件${SOURCES}) 正如您想象的那样,我想要做的是使用标志 -std=c++0x 编译我的 C++ 源代码(我正在使用 gcc 并且我需要 C++11 功能).不幸的是,这不起作用,因为当我 ..
发布时间:2021-12-26 21:58:25 其他开发

编译器标志的位置 -l

我目前正在学习 OpenCL.现在,当我想编译我的程序时,我收到以下命令的错误: g++ -Wall -l OpenCL main.cpp -o main 错误大多是未定义的引用,因为库没有链接,我想(不过我会在最后贴出错误代码). 但是使用这个命令一切正常: g++ -Wall main.cpp -o main -l OpenCL 所以我的问题是,我该怎么做才能在命令前面使用 -l ..
发布时间:2021-12-26 15:32:49 C/C++开发

g++ 中的优化级别 -O3 是否危险?

我从各种来源(尽管主要来自我的同事)听说,在 g++ 中以 -O3 的优化级别进行编译在某种程度上是“危险的",一般应该避免,除非被证明是必要的. 这是真的吗,如果是,为什么?我应该坚持使用 -O2 吗? 解决方案 在 gcc 的早期(2.8 等)和 egcs 时代,redhat 2.96 -O3 有时会出现很多问题.但这是十多年前的事了,-O3 与其他级别的优化(在错误方面)没有太 ..
发布时间:2021-12-20 15:50:48 C/C++开发

矩阵/向量运算的 GCC 优化标志

我正在使用 C 执行矩阵运算.我想知道哪些编译器优化标志可以提高双精度和 int64 数据的这些矩阵运算的执行速度 - 如乘法、逆等.我不是在寻找手动优化代码,我只想使用编译器标志使本机代码更快,并了解有关这些标志的更多信息. 到目前为止我发现的可以改进矩阵代码的标志. -O3/O4-funroll-loops-ffast-数学 解决方案 首先,我不推荐使用-ffast-math,原因 ..
发布时间:2021-12-19 08:29:41 其他开发

C 有哪些有用的 GCC 标志?

除了设置 -Wall 和设置 -std=XXX 之外,还有哪些其他真正有用但鲜为人知的编译器标志可用于 C 中? 我对任何其他警告和/或在某些情况下将警告转化为错误特别感兴趣,以绝对减少任何意外的类型不匹配. 解决方案 几个 -f 代码生成选项很有趣: -fverbose-asm 如果您使用 -S 进行编译以检查程序集输出,则非常有用 - 它添加了一些信息性注释. -fi ..
发布时间:2021-12-18 22:59:35 其他开发

如何强制 gcc 内联函数?

__attribute__((always_inline)) 是否强制 gcc 内联函数? 解决方案 是. 来自 文档 v4.1.2 来自文档最新 always_inline 通常,除非指定优化,否则不会内联函数.对于声明为内联的函数,即使未指定优化级别,该属性也会内联函数. ..
发布时间:2021-12-18 22:43:24 其他开发

如何查看哪些标志 -march=native 将激活?

我正在使用 GCC 4.3 编译我的 C++ 应用程序.我使用 -march=native 而不是手动选择优化标志,理论上应该添加适用于我正在编译的硬件的所有优化标志.但是我如何检查它实际使用了哪些标志? 解决方案 您可以使用 -Q --help=target 选项: gcc -march=native -Q --help=target ... -v 选项也可能有用. 您可以查看 ..
发布时间:2021-12-18 22:37:14 其他开发

如何在 Visual Studio 2010 中设置 CUDA 编译器标志?

在持续收到 error : identifier "atomicAdd" is undefined 之后,我找到了使用 -arch sm_20 标志编译的解决方案.但是如何在 VS 2010 中传递这个编译器标志呢?我在 Project > 下尝试过这样的尝试属性: 但这显然没有效果,错误仍然存​​在 - 我做错了什么? 非常感谢. 解决方案 您可以在此对话框中选择 GPU 代 ..
发布时间:2021-12-14 18:59:21 其他开发

设置 Java 编译器合规性级别

我需要在命令行上编译一个 Java 程序,我试图将编译器级别设置为较低的级别 (1.6).我这样试过,但没有用: javac -1.6 Hello.java 解决方案 使用 -source 和 -target 选项: javac -target 1.6 -source 1.6 Hello.java ..
发布时间:2021-11-22 16:24:53 Java开发

如何将全局 CXX 编译器标志添加到 yocto 构建

这对我来说似乎很明显,但我找不到任何解决方案.假设我想添加或更改适用于所有 yocto 配方的编译器标志/选项.可以在某处添加全局标志而不更改配方吗? 解决方案 您可以在 poky/meta/conf/bitbake.conf 中为 Yocto 构建添加全局编译器选项.添加选项后,使用命令bitbake -e 检查bitbake环境 cat poky/meta/conf/bitbake ..
发布时间:2021-10-04 19:50:31 其他开发

Xcode 项目范围的编译器标志

使用 Xcode 4.2 和 LLVM 编译器,在为 ARMv6 编译时,生成的应用程序中存在一些非常奇怪的错误(例如 CGSize 的“宽度"属性返回“高度").为了解决这个问题,我发现我必须设置编译器标志 -mno-thumb.我知道如何逐个文件地设置编译器标志,但有没有办法为整个项目设置编译器标志? 解决方案 您可以在“构建设置"选项卡的“语言"部分下的项目设置中设置项目范围的编译器 ..
发布时间:2021-09-30 19:18:43 移动开发