【问题标题】:Object files not properly added to archive on mac目标文件未正确添加到 Mac 上的存档中
【发布时间】:2016-04-08 08:06:54
【问题描述】:

我正在尝试从一组目标文件中构建档案。 我正在这样做

ar -rs my_archive.a foo.o bar.o other_object_files.o.

在 linux 机器上一切都很好,但是当我在我的 mac 上尝试相同的命令时,似乎只添加了一些目标文件。这会导致对应于子程序的未定义符号,比如other_object_files.o

此外,如果我尝试手动链接导致未定义符号的目标文件,我可以正确构建可执行文件。

那是

ifort -o my_exec main.o other_object_files.o my_archive.a

工作正常。

我在这方面错过了 linux 和 mac 之间的一些区别吗?

编辑

来自nm other_object_files.o 的符号看起来不错,所以真的就像它们没有正确添加到存档中一样。

这里是my_archive.afile在linux和mac中的一些行(对象和存档文件的名称当然不同)

Linux:

ed_2.1-opt.a:decomp_coms.o:0000000000000000 T decomp_coms._
ed_2.1-opt.a:decomp_coms.o:0000000000000038 R decomp_coms___debug_param_const
ed_2.1-opt.a:decomp_coms.o:0000000000000030 D decomp_coms_mp_cwd_frac_
ed_2.1-opt.a:decomp_coms.o:0000000000000008 D decomp_coms_mp_decay_rate_fsc_
ed_2.1-opt.a:decomp_coms.o:0000000000000000 D decomp_coms_mp_decay_rate_ssc_
ed_2.1-opt.a:decomp_coms.o:0000000000000010 D decomp_coms_mp_decay_rate_stsc_
ed_2.1-opt.a:decomp_coms.o:0000000000000004 C decomp_coms_mp_decomp_scheme_
ed_2.1-opt.a:decomp_coms.o:0000000000000044 C decomp_coms_mp_f_labile_

苹果机:

ed_2.1-opt.a:decomp_coms.o: 0000000000000000 T _decomp_coms._
ed_2.1-opt.a:decomp_coms.o: 000000000000058c S _decomp_coms._.eh
ed_2.1-opt.a:decomp_coms.o: 0000000000000010 C _decomp_coms_mp_cwd_frac_
ed_2.1-opt.a:decomp_coms.o: 0000000000000010 C _decomp_coms_mp_decay_rate_fsc_
ed_2.1-opt.a:decomp_coms.o: 0000000000000010 C _decomp_coms_mp_decay_rate_ssc_
ed_2.1-opt.a:decomp_coms.o: 0000000000000010 C _decomp_coms_mp_decay_rate_stsc_
ed_2.1-opt.a:decomp_coms.o: 0000000000000010 C _decomp_coms_mp_decomp_scheme_
ed_2.1-opt.a:decomp_coms.o: 0000000000000050 C _decomp_coms_mp_f_labile_

编辑

也试过了

libtool -static -arch_only x86_64 -o my_archive.a foo.o bar.o other_object_files.o

遵循此 SO post 但同样没有进展。

【问题讨论】:

  • 即使使用“ranlib my_archive.a”也没有成功? (尽管手册页上说“ar s”等同于 ranlib)。
  • 以下this 我试过了:ar -rs my_archive.a foo.o bar.o other_object_files.o ranlib my_archive.a 但没有成功。

标签: macos linker fortran archive unix-ar


【解决方案1】:

问题是默认情况下没有添加明显常见的符号。

选项 1:

ar -rs my_archive.a foo.o bar.o other_object_files.o ranlib -c my_archive.a

选项 2:

libtool -c -static -o my_archive.a foo.o bar.o other_object_files.o

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 2011-09-15
    • 1970-01-01
    相关资源
    最近更新 更多