gpt4 book ai didi

linux - 带有地址清理器的 Linux 和 Mac 的 Makefile

转载 作者:太空狗 更新时间:2023-10-29 12:25:03 24 4
gpt4 key购买 nike

我正在尝试编写一个可以在使用地址清理器构建的 linux 和 mac 上使用的 makefile。这适用于我的 vagrant 实例:

CC         = gcc
ASAN_FLAGS = -fsanitize=address -fno-omit-frame-pointer -Wno-format-security
ASAN_LIBS = -static-libasan
CFLAGS := -Wall -Werror --std=gnu99 -g3
LDFLAGS += -lpthread

all: hello

hello: tiny_queue.o hello.o
$(CC) -o $@ $(CFLAGS) $(ASAN_FLAGS) $(CURL_CFLAGS) $^ $(LDFLAGS) $(CURL_LIBS) $(ASAN_LIBS)

这适用于 ubuntu/trusty64 但在我的 mac 上失败了

$ make
gcc -Wall -Werror --std=gnu99 -g3 -I/opt/X11/include -c -o hello.o hello.c
gcc -o hello -Wall -Werror --std=gnu99 -g3 -fsanitize=address -fno-omit-frame-pointer -Wno-format-security tiny_queue.o hello.o -lpthread -static-libasan
clang: error: unknown argument: '-static-libasan'
make: *** [hello] Error 1

有谁知道如何为 mac 和 linux 编写兼容的 makefile?

附注我是 C 语言的新手,如果这个问题太基础了,我很抱歉。

最佳答案

CC         = gcc
ASAN_FLAGS = -fsanitize=address -fno-omit-frame-pointer -Wno-format-security
ASAN_LIBS = -static-libasan
CFLAGS := -Wall -Werror --std=gnu99 -g3
LDFLAGS += -lpthread

all: hello

hello: tiny_queue.o hello.o
$(CC) -o $@ $(CFLAGS) $(ASAN_FLAGS) $(CURL_CFLAGS) $^ $(LDFLAGS) $(CURL_LIBS) $(ASAN_LIBS)

您应该指定一个 Asan 库(或 UBsan 库,就此而言)。由于您正在使用编译器驱动程序来驱动链接,因此只需使用 -fsanitize=address(这是推荐的做法)。不要添加-static-libasan。编译器驱动程序将为您添加适当的库。

关于linux - 带有地址清理器的 Linux 和 Mac 的 Makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44501833/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com