gpt4 book ai didi

c++ - GCC:--whole-archive 和--no-whole-archive 选项

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:03:50 31 4
gpt4 key购买 nike

我正在使用 GCC 从两个 *.a(静态库)创建一个共享对象库。我引用了这些文章:

  1. How to force gcc to link an unused static library
  2. How to include all objects of an archive in a shared object?

并创建了一个命令行:

gcc -shared -o libmain.so main.o  -Wl,--whole-archive -lgdiplus -lsqlite3 -Wl,--no-whole-archive

此处main.o 是使用-fPIC 选项编译的,用于链接以创建名为libmain.so 的最终输出文件。但是当我检查我的输出时,它似乎是空的:

$># nm libmain.so
00000000002005d0 a _DYNAMIC
0000000000200788 a _GLOBAL_OFFSET_TABLE_
w _Jv_RegisterClasses
00000000002005a8 d __CTOR_END__
00000000002005a0 d __CTOR_LIST__
00000000002005b8 d __DTOR_END__
00000000002005b0 d __DTOR_LIST__
0000000000000598 r __FRAME_END__
00000000002005c0 d __JCR_END__
00000000002005c0 d __JCR_LIST__
00000000002007a8 A __bss_start
w __cxa_finalize@@GLIBC_2.2.5
0000000000000500 t __do_global_ctors_aux
0000000000000440 t __do_global_dtors_aux
00000000002005c8 d __dso_handle
w __gmon_start__
00000000002007a8 A _edata
00000000002007b8 A _end
0000000000000538 T _fini
00000000000003e0 T _init
0000000000000420 t call_gmon_start
00000000002007b0 b completed.6145
00000000002007a8 b dtor_idx.6147
00000000000004ec T foo
00000000000004c0 t frame_dummy

理想情况下,这应该包含来自 *.a 文件 的所有符号,对吧?

任何人都可以指导这里出了什么问题吗?我使用的是 RHEL 5.5 x64 和 GCC 4.1.2。

谢谢,欧姆卡尔

最佳答案

尝试:

gcc -shared -o libmain.so main.o  -Wl,--whole-archive gdiplus sqlite3 -Wl,--no-whole-archive

关于c++ - GCC:--whole-archive 和--no-whole-archive 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30438812/

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