相关疑难解决方法(0)

有没有办法在输出二进制文件中存储clang编译时标志?

有没有办法在使用clang时将编译时标志存储在输出二进制文件中?

例如在运行之后:

clang -O3 -c main.c

生成的main.o文件应该包含在某处-O3.

gcc有,-frecord-gcc-switches但我找不到铿锵的等价物.

c c++ gcc clang

13
推荐指数
1
解决办法
440
查看次数

如何使用gcc 4.8构建时使用地址消毒剂进行检测?

我正在研究一个用C语言编写的程序,我偶尔使用地址清理程序构建,基本上是为了捕获错误.当程序启动时,程序会在日志中打印一个横幅,其中包括:构建它的人,构建它的分支,编译器等.我认为如果二进制文件是使用地址清理程序构建的,也会很好.我知道有__has_feature(address_sanitizer),但这只适用于clang.我尝试了以下简单程序:

#include <stdio.h>

int main()
{
#if defined(__has_feature)
# if __has_feature(address_sanitizer)
    printf ("We has ASAN!\n");
# else
    printf ("We have has_feature, no ASAN!\n");
# endif
#else
    printf ("We got nothing!\n");
#endif

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在构建时gcc -Wall -g -fsanitize=address -o asan asan.c,这会产生:

We got nothing!
Run Code Online (Sandbox Code Playgroud)

随着clang -Wall -g -fsanitize=address -o asan asan.c我得到:

We has ASAN!
Run Code Online (Sandbox Code Playgroud)

是否有一个等同于__has_feature的gcc?

我知道有办法检查,比如使用地址清理程序构建的程序的巨大VSZ值,只是想知道是否有编译时定义或其他东西.

c gcc clang address-sanitizer

10
推荐指数
1
解决办法
1978
查看次数

标签 统计

c ×2

clang ×2

gcc ×2

address-sanitizer ×1

c++ ×1