我必须编写一个程序,之后应该在超级计算机上运行,所以我得到了提示我应该静态链接我的库。
问题在于我链接
g++ -o calcrank -llinbox -lgivaro -lgmp -lntl -static -static-libstdc++ -static-libgcc calcrank.cpp
/usr/bin/ld: cannot find -llinbox
/usr/bin/ld: cannot find -lgivaro
/usr/bin/ld: cannot find -lgmp
/usr/bin/ld: cannot find -lntl
collect2: error: ld returned 1 exit status
当然,我使用的所有库只有* .so库而不是静态* .a库。有没有一种方便的方法来转换* .so库或有关如何继续获得自动运行程序的任何建议?
答案 0 :(得分:2)
据我所知,没有简单的方法。
“静态链接”共享库有一些工具:
你应该问一下这个问题,也许你可以带来共享库,并在运行程序之前将环境变量LD_LIBRARY_PATH
设置为指向脚本中的共享库目录。
据我所知,Statifier并不适合我。 Ermine未经许可可能提供一些警告和30天的限制信息。因此,为了在没有管理员权限的Linux系统中分发我的东西,我将all needed shared libraries收集到一个子目录中,制作了一个脚本来设置env变量并启动我的可执行文件。并将其全部分发为拉链。