私はLinux上で使用できるMakefileを作成しようとしていますが、macはアドレス消毒剤でビルドしています。これは私の浮浪者インスタンス上で動作します:LinuxおよびMac用のMakefile with address sanitizer
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 [email protected] $(CFLAGS) $(ASAN_FLAGS) $(CURL_CFLAGS) $^ $(LDFLAGS) $(CURL_LIBS) $(ASAN_LIBS)
これはubuntu/trusty64
に動作しますが、MacとLinux用の互換性のあるメイクファイルを作成する方法誰を知ってい
$ 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上で失敗しますか?
p.s.私は非常にCに新しいです、この質問が超基本的な場合はごめんなさい。
コンパイラとリンカーの両方に '-pthread'フラグを付けてマルチスレッドコードをビルドします。 '-lpthread'は適切ではありません。 –
[AddressSanitizer](http://clang.llvm.org/docs/AddressSanitizer.html)を参照してください –
これはC言語には関係ありません。 (厳密にはメイクファイルの質問でさえも)。 – Olaf