如何在不同的Linux(Debian)版本上编译和运行

如何在不同的Linux(Debian)版本上编译和运行

在 debian 10 上使用 gcc 8.3 编译:

root@debian:/home/mongo# ldd /home/mongo/build/opt/mongo/db/mongod
        linux-vdso.so.1 (0x00007ffe9f1c0000)
        libcurl.so.4 => /lib/x86_64-linux-gnu/libcurl.so.4 (0x00007f1d7012d000)
        liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f1d70105000)
        libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f1d700eb0               
...

所以我确信它是作为动态链接进行编译和链接的。它实际上使用来自 ldd 的 gcc 6 运行时 .so,尽管是用 gcc 8 编译的:

libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fc6183c1000)  
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc618042000)

Debian 9 上有 gcc 6.3 的相同可执行文件:

ldd /usr/bin/mongod
        statically linked

它出现了段错误

mongod[12662]: segfault at 8 ip 00007f25798fa821 sp 00007ffccda20090 error 4 in ld-2.24.so

这是什么原因呢?如何在不同的Linux Debian版本上编译运行?

相关内容