我正在编写一个不兼容GNU GPL的跨平台应用程序.我目前面临的主要问题是应用程序与glibc和libstdc ++动态链接,几乎每个库的新主要更新都不向后兼容.因此,在我的应用程序中可以看到随机崩溃.
作为一种解决方法,我分发在几个不同系统(具有不同的C/C++运行时版本)上编译的应用程序的二进制文件.但我想没有这个.所以我的问题是,保持许可和一切,我可以静态链接glibc和libstdc ++吗?此外,这会导致rtld出现问题吗?
Vit*_* Py 19
你不需要.
将链接的原始库复制到应用程序文件夹中的目录(本例中为../lib).
喜欢:
my_app_install_path
将应用程序重命名为app.bin之类的应用程序.将您的应用替换为一个小的shell脚本,将环境变量LD_LIBRARY_PATH设置为库路径(并连接以前的LD_LIBRARY_PATH内容,如果有的话).现在ld应该能够找到你链接的动态库,而不需要将它们静态编译到你的可执行文件中.
请记住遵守LGPL,将给定的属性添加到库中,并指向可以下载源的文档.
指定-static-libgcc链接器的选项将导致它链接到C库的静态版本(如果在系统上可用).否则会被忽略.