3

我对开源和许可证有基本的理解问题。有人可以澄清以下情况的一些问题。对不起,如果它是非常基本的

  1. 我正在编写一个专有软件,我计划在其中使用一些开源库。我还需要 glibc 和 C 编译器,但不想在我的操作系统中使用默认的 gcc 工具链,所以使用 crosstools-ng 构建了我自己的

  2. 现在在 ct-ng 中,我猜 libstdc++ 库是静态链接的(这是用于 c++ 的,我猜在大多数情况下我不会使用它)但是从我的工具链配置来看,我的 libc 是静态链接还是动态链接?如果是这种情况,鉴于 glibc 是 LGPL,并且我可以将它链接到我的专有软件,这种静态链接是否会对我的许可造成任何问题?我的软件仍然可以是封闭源代码吗?还是我必须释放编译的对象。

我的工具链配置如下,如果 glibc 是静态链接或动态链接,有人可以指向我吗?

Target: x86_64-some-linux-gnu
Configured with: /home/balravin/tools/platform/x86/src/gnu/gcc/4.4.7/.build/src/gcc-4.4.7/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=x86_64-some-linux-gnu --prefix=/home/balravin/tools/platform/x86/obj/gnu/gcc/4.4.7/x86_64-some-linux-gnu --with-sysroot=/home/balravin/tools/platform/x86/obj/gnu/gcc/4.4.7/x86_64-some-linux-gnu/x86_64-some-linux-gnu/sysroot --enable-languages=c,c++,fortran --with-pkgversion='crosstool-NG 1.15.3' --disable-sjlj-exceptions --enable-__cxa_atexit --enable-libmudflap --enable-libgomp --enable-libssp --with-gmp=/home/balravin/tools/platform/x86/src/gnu/gcc/4.4.7/.build/x86_64-some-linux-gnu/buildtools --with-mpfr=/home/balravin/tools/platform/x86/src/gnu/gcc/4.4.7/.build/x86_64-some-linux-gnu/buildtools --with-ppl=/home/balravin/tools/platform/x86/src/gnu/gcc/4.4.7/.build/x86_64-some-linux-gnu/buildtools --with-cloog=/home/balravin/tools/platform/x86/src/gnu/gcc/4.4.7/.build/x86_64-some-linux-gnu/buildtools --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --enable-threads=posix --enable-target-optspace --with-long-double-128 --disable-multilib --with-local-prefix=/home/balravin/tools/platform/x86/obj/gnu/gcc/4.4.7/x86_64-some-linux-gnu/x86_64-some-linux-gnu/sysroot --enable-c99 --enable-long-long
Thread model: posix
gcc version 4.4.7 (crosstool-NG 1.15.3) 
4

1 回答 1

12

libc.so进行动态链接的原因有很多,既有法律上的,也有技术上的。

在法律方面,GNU libc 的LGPL许可证要求您允许您的用户增强他们的 libc;因此,如果您销售静态链接的专有软件(技术上是个坏主意),您需要为您的用户提供将其重新链接到更好版本的 libc 的方法;具体来说,您可能还需要提供*.o软件的对象。

在技​​术方面,libc.so所有间接利用libdl.sold.so使用动态链接的特性几乎都需要动态链接,特别是与 NSS 相关的功能(如getpwentgetaddrinfo许多其他功能,请参阅nsswitch.conf(5)nss(5 ))。此外,动态链接 libc 效率更高(RAM 几乎由所有使用libc.so的进程共享,并且可执行文件大小更小;最重要的是,升级libc.so更容易)。

顺便说一句,您的公司是否考虑过让您的 Linux 软件免费(如语音)?它确实有很多优势,很多公司都在选择开源路线。

于 2012-07-27T18:16:43.050 回答