奇怪的是,我的makefile中的-g不能用。可能是使用了不同的g++版本?
这是我的makefile
.default: all
all: linkedlist
clean:
rm -f linkedlist *.o
linkedlist: main.o list.o
g++ -Wall -Werror --std=c++14 -g -O -o $@ $^
%.0: %.cpp
g++ -Wall -Werror --std=c++14 -g -O -c $^
这是输出。
╰ make
c++ -c -o main.o main.cpp
c++ -c -o list.o list.cpp
g++ -Wall -Werror --std=c++14 -g -O -o linkedlist main.o list.o
但它不能与我的ldb一起工作。然而,如果我手动生成它
g++ -Wall -Werror -g --std=c++14 -O -o linkedlist list.cpp main.cpp
我的调试器工作了,我也注意到它产生了 linkedlist.dSYM
文件夹(使用makefile则没有)。我不确定,但我想在我上周更新xcode之前,当我用-g生成二进制文件时,我从来没有看到过.dSYM文件。
有什么原因吗?
欢呼
G++版本。
╰ g++ --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 11.0.3 (clang-1103.0.32.59)
Target: x86_64-apple-darwin19.4.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
你的Makefile里有个错误
%.0: %.cpp
应是
%.o: %.cpp
字母'o',而不是数字0。
由于这个错误,你使用的是编译C++代码的默认规则,而这些规则并不包括以下内容 -g
选项,并且有可能正在使用不同的编译器,c++与g++。