- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的错误
make
cc msgd.o -o msgd
msgd.o: In function `main':
/home/cam/Desktop/lab1/msgd.cc:37: undefined reference to `Server::Server(int, bool)'
/home/cam/Desktop/lab1/msgd.cc:39: undefined reference to `Server::~Server()'
msgd.o: In function `__static_initialization_and_destruction_0':
/usr/include/c++/4.7/iostream:75: undefined reference to `std::ios_base::Init::Init()'
/usr/include/c++/4.7/iostream:75: undefined reference to `std::ios_base::Init::~Init()'
msgd.o:(.eh_frame+0x13): undefined reference to `__gxx_personality_v0'
collect2: error: ld returned 1 exit status
make: *** [msgd] Error 1
对 Server::的前两个 undefined reference 是伪造的,代码有效并且 Server.h 正确包含在 msgd.cc 中。
然而,当我简单地执行“make server”时它运行良好,而当我执行“make client”时它运行良好,但我希望能够只执行“make”并让它构建两者。
这是我的生成文件。根据https://stackoverflow.com/a/10907227/2080104我需要包含 -lstdcc++,但我似乎无法弄清楚如何在 makefile 中这样做。
# Makefile for socket examples
CXX= g++ $(CCFLAGS)
msgd= msgd.o Server.o Data.o User.o Message.o Str.o
msg= msg.o Client.o Str.o
OBJS = $(msgd) $(msg)
CCFLAGS= -std=c++11 -g
all: msgd Server Data User Message Str msg Client
server:$(msgd)
$(CXX) -o msgd $(msgd)
client:$(msg)
$(CXX) -o msg $(msg)
clean:
rm -f $(OBJS) $(OBJS:.o=.d)
realclean:
rm -f $(OBJS) $(OBJS:.o=.d) msgd msg
# These lines ensure that dependencies are handled automatically.
%.d: %.cc
$(SHELL) -ec '$(CC) -M $(CPPFLAGS) $< \
| sed '\''s/\($*\)\.o[ :]*/\1.o $@ : /g'\'' > $@; \
[ -s $@ ] || rm -f $@'
include $(OBJS:.o=.d)
最佳答案
当您有一个名为 msgd.o
的目标文件时,您将一个变量命名为 msgd
,然后您将它们混淆了。哦,你有一个目标 server
,它实际上并不构建 server
,它构建 msgd
。
您有一个默认目标 (all
),它构建的内容与您希望默认目标构建的内容不同。
当你不知道如何在命令行上做某事,或者你不知道 makefile 的哪一部分时,你想要 Make 做某事(即使用 -lstdcc++
)对应于您在命令行上执行的操作。
我会建议对 makefile 进行具体更改,但您的意图如此不明确,恐怕弊大于利。
关于c++ - 在 makefile 中使用 -lstdc++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18864488/
调用编译器标志“-lstdc++”会调用哪些标准?与“-lstdc++11”一样,c++11 标准被调用,同样可以被“-std=c++11”调用。 最佳答案 -l 标志不会改变标准一致性,它用于指定要
当我尝试在Linux上打开应用程序时,它崩溃并显示以下行: /usr/bin/ld: cannot find -lstdc++ clang: error: linker command failed
我在我的应用程序中使用openCV2.framework。它可以在模拟器中正常运行,但不能针对iOS设备进行编译。它得到以下错误 ld: library not found for -lstdc++
我试图将编译分解为这四个步骤,但最后一个步骤对我来说似乎有问题。 cpp hello.cpp > hello.i g++ -S hello.i as -o hello.o hello.s ld -o
安answer to this question让我意识到我需要将 -lstdc++ 添加到我的“其他链接器标志”中才能编译我的项目。 如果我将我的代码直接编译到我的项目中,它运行良好。如果我将它构建
有几个关于获取 experimental/filesystem 的问题在最新版本的 GCC 和 Clang 中编译:experimental::filesystem linker error 但是现在
我正在尝试使用其他人的 Makefile 来编译一个非常简单的 C++ 库。生成文件如下: JNIFLAGS=-O2 -pthread -I/usr/lib/jvm/java-6-sun/includ
这是我的错误 make cc msgd.o -o msgd msgd.o: In function `main': /home/cam/Desktop/lab1/msgd.cc:37: und
我正在尝试构建 wxFormBuilder_v3.5.0-beta-source。它带有一个用于创建构建文件的 shell 文件,但它一直卡在以下错误中: ==== Building Premake4
g++和gcc -lstdc++有区别吗? 也就是说,g++就是默认链接了C++标准库的gcc吗? 最佳答案 g++ 是一个编译器,类似于 gcc。然而,g++ 包括解析现代 C++ 构造的能力,而
将 Xcode 版本更新到 10.0 beta 后,开始出现“ld: library not found for -lstdc++.6”错误。相同的代码在 Xcode 9.2 中运行良好 还将 mac
这是在命令行中工作的 c++ filesystem 上的演示 filesystem-testing.cpp: 环境:gcc/5.5.0 #include #include #include in
我正在尝试编译一个使用 std::filesystem 的应用程序。我使用 CMake 作为构建系统,使用 g++-8 作为编译器。 我的 CMakeLists.txt 包括 target_link_
我在 64 位系统上有 32 位库,所以在使用 32 位库编译我的代码时,我通过了 -m32 但这会导致另一个错误提示 /usr/bin/ld: skipping incompatible /usr/
我正在尝试将 Python 库包装在 C++ 库周围,而 distutils 在 OS X 上对我来说失败了。以下是我的 setup.py 中的相关行: if sys.platform.startsw
尝试在 MacOS 上安装 python 依赖项时遇到构建错误。 clang: warning: libstdc++ is deprecated; move to libc++ with a
我正在关注 Matlab编码器kalman教程在 Matlab帮助。使用时 codegen ,出现如下错误: /usr/bin/ld: cannot find -lstdc++ collect2: l
我在尝试使用 Xcode 10 在 iOS 上使用“IBMMobileFirstPlatformFoundation”的 pod 安装运行应用程序时收到错误 ld: library not found
在尝试使用当前的 GCC 在 C++ 中使用一些新的/实验性的东西时,我遇到了链接错误。好像类似question已发布,但仍然出现错误。 有人可以解释一下我在这里做错了什么/哪里错了吗?。希望我已经提
ld: library not found for -lstdc++.6 clang: error: linker command failed with exit code 1 (use -v to
我是一名优秀的程序员,十分优秀!