gpt4 book ai didi

linux - 使用g++编译静态库

转载 作者:太空宇宙 更新时间:2023-11-04 04:55:20 24 4
gpt4 key购买 nike

我有 3 个类 - 我用 firstClasssecondClassthirdClass 表示它们。我的 header - firstClass.hsecondClass.hthirdClass.h 和源 firstClass.cppsecondClass.cppthirdClass.cpp。在类 thirdClass 中,我创建了 firstClass 的实例和两个 secondClass 的实例。在 main.cpp 中,我解除了并创建了实例 thirdClass

我想创建thirdclass的静态库并链接到main.cppfirstClassthirdClass 使用相同的库 libm.a

我一步步创建库如下:

  1. g++ -c -I-/usr/include/-I-/usr/lib/-I-/home/projects/Learninig firstClass.cpp -lstdc++ -lm-o WsChannel.o -w -m32
  2. g++ -c -I-/usr/include/-I-/usr/lib/--I-/home/projects/Learninig secondaryClass -lstdc++ -o secondary.o -w -m32
  3. g++ -c -I-/usr/include/-I-/usr/lib/--I-/home/projects/LearninigthirdClass.cpp -lstdc++ -lm -othirdClass.o -w -m32
  4. ar rcs libLearning.a firstClass.o secondaryClass.o ThirdClass.o
  5. g++ main.cpp -L。 -lLearning -lm -o MnLearning.o -m32

编译正确,没有任何错误,但是当我执行程序时,出现同样的错误。我花了几个小时检查代码,但没有发现错误。那么也许编译是不正确的。我使用网络上的一些教程做到了这一点。如果还有什么不清楚的地方,我准备进一步解释我的问题。

编辑:我的错误:MnLearning[5574bd4f2000+26000] 中 557400000045 ip 00005574bd509dcd sp 00007ffd9e887900 错误 4 处出现段错误

最佳答案

错误肯定是在您自己的源代码中。避免undefined behavior在其中,并且是 scared布法罗大学。

您对-I-的使用很奇怪,而且可能是错误的。我建议删除它(如果您的计算机和发行版是 64 位,首先删除 -m32 标志;首先让您的程序在笔记本电脑上正确运行,然后通过添加 -m32 标志将其移植到 32 位 Linux)。您可以使用preprocessor options-H 一样显示包含哪些文件。

我建议使用一些 build automation 来构建您的库和程序。工具,例如 GNU makeninja .

配置您的构建以使用所有警告和调试信息进行编译,即使用 g++ -Wall -Wextra -gGCC 。改进您的源代码以消除警告。然后use the gdb debugger了解程序(和库)的行为。

So then maybe compiling was incorrect.

不,编译器可能很好,你应该相信它。

该错误很可能出现在您自己的代码中。

My error: segfault at 557400000045 ip 00005574bd509dcd sp 00007ffd9e887900 error 4 in MnLearning[5574bd4f2000+26000]

Segmentation fault是您自己的代码中出现某些错误的症状(例如某些缓冲区溢出、某些错误的指针取消引用等;或其他类型的 UB)。

您也可以使用valgrind .

I spent some hours on checking code, but I don't find bugs.

您没有花费足够的时间(有些错误可能需要您数周的工作才能找到),并且您忘记使用调试器,这是一个非常方便的工具,可以帮助您了解程序的行为并查找其中的错误。请注意 programming is difficult ,不要灰心。

关于linux - 使用g++编译静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48097842/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com