g++ -g选项不能只在makefile中使用。

问题描述 投票:0回答:1

奇怪的是,我的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
c++ makefile
1个回答
0
投票

你的Makefile里有个错误

%.0: %.cpp

应是

%.o: %.cpp

字母'o',而不是数字0。

由于这个错误,你使用的是编译C++代码的默认规则,而这些规则并不包括以下内容 -g 选项,并且有可能正在使用不同的编译器,c++与g++。

© www.soinside.com 2019 - 2024. All rights reserved.