-->

链接GLIBC静态和专有软件许可[关闭](Linking GLIBC statically and

2019-06-26 14:35发布

我有一个开放源代码和许可基本认识问题。 可能有人请澄清以下情况的一些问题。 原谅我,如果这是非常基本的

  1. 我写的,我打算使用一些开源库的专有软件。 我还需要glibc的和C编译器,但不想使用默认的gcc工具从我的操作系统,所以建立了自己的使用crosstools-NG

  2. 现在,在CT-NG,我猜的libstdc ++库被静态链接(这是C ++,我不会使用,在我想大多数情况下),但是从我的工具链的配置是我的libc的静态或动态链接? 如果是这样的话,因为glibc的是LGPL,并且我可以链接到我的专有软件,这将静态链接导致任何问题,我WRT许可? 可我的软件仍然可以密切来源? 或者我一定要释放编译的对象。

我的工具链配置如下,从这个可能有人指向我,如果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) 

Answer 1:

原因是多方面的,既有法律和技术,使libc.so动态链接。

在法律方面,在LGPL GNU libc中的许可证要求你允许你的用户,以提高他们的libc; 所以,如果你卖这是静态链接(技术上坏主意)的专有软件,你需要给的手段,以你的用户将它重新链接到一个更好的版本的libc的; 具体你可能还需要给*.o软件的对象。

在技术方面,动态链接libc.so几乎被采取的间接利用所有功能需要libdl.sold.so使用动态linking- -即,特别是NSS相关的功能(如getpwentgetaddrinfo和许多人一样,见的nsswitch.conf(5) & NSS(5) )。 此外,动态链接的libc是更有效的(RAM被几乎通过使用所有进程共享libc.so和可执行文件的大小越小;和最重要的是,升级libc.so是更容易)。

顺便说一句,没你的公司考虑让你的Linux软件免费的(如语音)? 它有很多优点,许多公司都选择了开源路线。



文章来源: Linking GLIBC statically and proprietary software licensing [closed]