【发布时间】:2017-11-14 01:42:36
【问题描述】:
我正在尝试编写一个可以在 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 很陌生,如果这个问题非常基础,我很抱歉。
【问题讨论】:
-
使用
-pthread标志为编译器和链接器构建多线程代码。-lpthread不够用。 -
这与C语言无关。 (严格来说甚至不是 makefile 问题)。
标签: linux macos makefile clang