0

我有一个简单的 C 程序和这样的 jamroot.jam:

exe hello : hello.c ;

我可以运行b2 -d+2

........
gcc.compile.c bin/gcc-8.3.0/debug/hello.o

    "g++" -x c -fPIC -O0 -fno-inline -Wall -g     -c -o "bin/gcc-8.3.0/debug/hello.o" "hello.c"

gcc.link bin/gcc-8.3.0/debug/hello

    "g++"    -o "bin/gcc-8.3.0/debug/hello" -Wl,--start-group "bin/gcc-8.3.0/debug/hello.o"  -Wl,-Bstatic  -Wl,-Bdynamic  -Wl,--end-group -fPIC -g
........

在此之后,我收到取决于 libstdc++ 的 hello 二进制文件:

$ ldd bin/gcc-8.3.0/debug/hello
        linux-vdso.so.1 (0x00007fffdaf5b000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ff6d8176000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff6d7ff3000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ff6d7fd9000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff6d7e18000)
        /lib64/ld-linux-x86-64.so.2 (0x00007ff6d8329000)

如果我用 gcc 构建它,我会得到更少的依赖:

$ gcc hello.c -o hello
$ ldd ./hello
        linux-vdso.so.1 (0x00007ffc661cc000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fca20243000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fca20433000)

我可以用 b2 做到这一点吗?

我有一个包含 C 和 C++ 程序的项目,我不想为 C 二进制文件使用不同的构建系统。

4

1 回答 1

0

尝试使用 g++,它适用于 c++ 和 c 它应该适用于编译,当你完成编译 run ./filename

于 2020-12-08T14:40:33.307 回答