代码之家  ›  专栏  ›  技术社区  ›  fschmitt

什么是Microsoft Visual Studio相当于GCC LD选项--整个存档

  •  21
  • fschmitt  · 技术社区  · 15 年前

    将静态库链接到可执行文件时,通常会丢弃未引用的符号。在我的例子中,有些未使用的对象被用来将它们各自的类注册到工厂中,如果这些对象被丢弃,那么这个注册就失败了。

    在我们使用gcc的Unix下,我可以将标志——整个归档文件传递给链接器ld(参见下面的ld文档摘录),这使得ld不会丢弃任何对象。VisualC++有类似的东西吗?

    --全档案

    对于命令行中提到的每个存档,
    `--“整个存档”选项,包括存档中的每个对象文件
    在链接中,而不是在存档中搜索所需的
    对象文件。这通常用于将存档文件转换为
    一个共享库,强制将每个对象包括在
    结果共享库。此选项可多次使用。

    7 回复  |  直到 9 年前
        1
  •  7
  •   Paul Michalik    9 年前

    /INCLUDE main

        2
  •  23
  •   mrry    9 年前

    link.exe /WHOLEARCHIVE --whole-archive ld the flag documentation

        3
  •  7
  •   Jerry Coffin    15 年前
        4
  •  4
  •   plodoc    15 年前
        5
  •  4
  •   ibrahim    9 年前

    add_executable(hello ${SOURCE_FILES})
    target_link_libraries(hello libA libB libC)     # Not need /wholearchive libC 
    set_target_properties(hello PROPERTIES LINK_FLAGS "/WHOLEARCHIVE:libA /WHOLEARCHIVE:libB")
    

    /WHOLEARCHIVE

        6
  •  1
  •   rr-    10 年前

    .lib .obj

    add_library(common OBJECT ${common_sources})
    add_executable(executable1 "main1.cc" $<TARGET_OBJECTS:common>
    add_executable(executable2 "main2.cc" $<TARGET_OBJECTS:common>
    

    ${common_sources})

        7
  •  0
  •   colin lamarre    10 年前