gpt4 book ai didi

c++ - 如何使用 GCC 创建基于其他静态库的静态库?

转载 作者:太空宇宙 更新时间:2023-11-04 14:31:53 25 4
gpt4 key购买 nike

<分区>

我想使用一些现有的静态库创建一个名为 libXYZ.a 的静态库:libX.alibY.alibZ.a 和一些目标文件。我用来构建静态库libXYZ.a的命令行是:

ld -o libXYZ.a one.o two.o -L./ -L/cygdrive/c/cygwin/lib/gcc/i686-pc-cygwin/4.8.2 -lX -lY -lZ -lstdc++

我正在使用 Cygwin GCC (g++) 编译 one.cpptwo.cpp 以获得 one.otwo.old 命令之前,如下所示:

g++ -o one.o one.cpp -c
g++ -o one.o two.cpp -c

libX.a, libY.a, libZ.a 都位于当前目录(这就是为什么 -L ./)。我在 ld 行中添加了 C++ 标准库链接器标志 -lstdc++。但是我在做的时候出现了以下错误:

one.o: one.cpp:(.text+0x32): undefined reference to `_Unwind_Resume'
ld: one.o: bad reloc address 0xd in section `.text$_ZN10ConfigC1Ev[__ZN10ConfigC1Ev]'
Makefile:22: recipe for target 'libXYZ.a' failed

所以我的问题是:ld 命令是从其他静态库和 .o 文件构建静态库的正确命令吗?是什么导致了错误?我在论坛上搜索了一下,发现可能是一些不兼容的编译器造成的。但我使用相同的 GCC 编译器构建了所有源代码。

更新:

我再次尝试使用以下命令:

ld -o libXYZ.a one.o two.o -L./ -lX -lY -lZ

但我仍然收到以下错误:

one.o:one.cpp:(.text+0x32): undefined reference to `_Unwind_Resume'
one.o:one.cpp:(.text+0x12a): undefined reference to `_Unwind_Resume'
...
./libX.a(wrapper.o):wrapper.cpp:(.text+0x7ba): undefined reference to `__chkstk_ms'
./libX.a(wrapper.o):wrapper.cpp:(.text+0x7ba): undefined reference to `_Unwind_Resume'
...

而且我省略了许多类似的错误,如上面的 _Unwind_Resume 错误。关于导致这些错误的原因有什么想法吗?

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