- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试从终端在远程机器上运行一个可执行文件 - SaTScanBatch,SaTScan 软件的可执行文件。
这是我得到的错误
/usr/lib64/libstdc++.so.6: 找不到版本“GLIBCXX_3.4.15”
问题类似于这些: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found或 How to fix: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found或 /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found
我的情况不同的是我没有管理员权限,所以我不能在 usr/lib 文件中添加库。我在我的远程存储库中下载了 libstdc++.6.0.15,我想用它来执行我的文件。
这是我尝试过的可能性
i) 修改环境变量LD_LIBRARY_PATH或LD_RUN_PATH或LD_PRELOAD为libstdc++.so.6.0.15的路径。--> 没有改变任何东西
ii) 以静态方式包含库
gcc SaTScanBatch -static-libstdc++
--> -static 选项无法识别,我猜远程机器的 GCC 版本太旧了。
iii) 尝试将文件链接到附加库:
gcc SaTScanBatch -L /path/library -l stdc++
或类似的
gcc SaTScanBatch -Wl,-rpath,path/to/library
-->错误
/usr/bin/ld: warning: Cannot create .eh_frame_hdr section, --eh-frame-hdr ignored.
/usr/bin/ld: error in SaTScanBatch64(.eh_frame); no .eh_frame_hdr table will be created.
/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../lib64/crt1.o: In function _start:
(.text+0x20): undefined reference to "main"
collect2: ld returned 1 exit status
iv) 使用 PatchElf 链接文件和库 --> 我无法安装 PatchElf,因为没有管理员权限
感谢您的任何建议!
最佳答案
Modify environment variable LD_LIBRARY_PATH or LD_RUN_PATH or LD_PRELOAD to the path of libstdc++.so.6.0.15. --> Did not change anything
您到底尝试了什么?
LD_LIBRARY_PATH
应该设置为包含新的 libstdc++.so.6
的目录,而不是文件本身,您需要export
环境变量,因此它可用于子进程,而不仅仅是您的 shell。并且您需要从 libstdc++.so.6
到 libstdc++.so.6.0.15
的符号链接(symbolic link),因为动态加载器将查找该名称,而不是 libstdc++ .so.6.0.15
LD_RUN_PATH
在链接期间用于将路径烘焙到可执行文件中。尝试运行可执行文件时,它在运行时什么也不做。如果您使用它,您需要将它设置为在远程计算机上 将包含libstdc++.so.6
文件的目录。同样,它需要设置为一个目录,而不是文件的路径。
LD_PRELOAD
又有所不同,而且几乎肯定不是您想要的。当可执行文件运行时,您将使用它强制加载特定的共享库。这可用于预加载较新的 libstdc++,但通常最好使用 LD_LIBRARY_PATH
在运行时设置路径或使用 LD_RUN_PATH
在链接时设置路径.
Try to link the file to the additional library:
您显示的命令是无稽之谈,它们不包含链接中的任何对象,因此您试图从无到有地创建可执行文件。这就是您收到错误 undefined reference to "main"
对于您的场景,我建议使用 LD_LIBRARY_PATH
。
关于linux - libstdc++.so.6 : version not found - NO admin rights,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37668738/
我是一名优秀的程序员,十分优秀!