代码之家  ›  专栏  ›  技术社区  ›  R.. GitHub STOP HELPING ICE

有没有一种简单的方法可以让GCC省略crtbegin.o/crtend.o?

  •  11
  • R.. GitHub STOP HELPING ICE  · 技术社区  · 14 年前

    除了使用 -nostdlib 链接 crt1.o -lc -lgcc 你自己,有没有什么简单的方法可以防止GCC链接 crtbegin[S].o crtend[S].o ?这些文件不是那么大,但我正在玩小二进制文件,并且想删除C程序不需要的无用的C++支持代码。(假设,GCC甚至连C程序都可以链接,以防使用具有全局对象变量的C++库。我会让每个人都知道它应该如何生成安全的一次初始化调用,无论是在C++模块中引用全局对象,而不是在初始化之前初始化全局对象。 main ……)

    我不反对黑客入侵海湾合作委员会 specs 文件使C++支持文件在这样的条件下有条件地链接,但我不确定我将如何做到这一点。也许已经有一个好方法了?

    2 回复  |  直到 14 年前
        1
  •  7
  •   R.. GitHub STOP HELPING ICE    14 年前
    gcc -wrapper sh,-c,'z= ; for i ; do [ "$z" ] || set -- ; z=1 ;
        case "$i" in *crtbegin*.o|*crtend*.o) ;; *) set -- "$@" "$i" ;; esac ;
        done ; exec "$0" "$@"'
    
        2
  •  3
  •   leppie    14 年前

    -nostartfiles