ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

solaris – libstdc .so.6:open failed:没有这样的文件或目录

2019-08-16 19:05:02  阅读:206  来源: 互联网

标签:c gcc solaris


我正在尝试在Solaris上运行我的第一个C程序.只是一个简单的Hello World程序.当我试图跑.我收到错误libstdc .so.6:open failed:没有这样的文件或目录.当然我做了一些谷歌搜索,发现我可以通过设置环境变量来解决这个问题:

export LD_LIBRARY_PATH=/usr/local/lib

在重新开始之后,我发现它不是解决问题的永久方法.我猜这与在编译期间链接libstdc .so.6有关.以下是我从一开始就采取的措施:

bash-3.2# gcc -c test.cpp

bash-3.2# gcc -o test test.o -lstdc++

bash-3.2# ./test
   libstdc++.so.6:open failed:No such file or directory

bash-3.2# ldd test | grep not
   libstdc++.so.6 =>        (file not found)

bash-3.2# /usr/ccs/bin/elfdump test | grep RUNPA

bash-3.2# find /usr -name libstdc++.so.6
   /usr/local/lib/libstdc++.so.6

我在编译期间错过了一面旗帜吗?如何创建软链接以便在运行该程序时知道在哪里查找?

这是我正在使用的平台:

bash-3.2# uname -a
   SunOS ms-sparc8 5.8 Generic_108528-13 sun4u sparc SUNW,Sun-Blade-100

bash-3.2# gcc -v
   Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.3.2/specs
   Configured with: ../configure --with-as=/usr/ccs/bin/as --with-ld=/usr/ccs/bin/ld --disable-nls --disable-libgcj --enable-languages=c,c++
   Thread model: posix
   gcc version 3.3.2

解决方法:

设置Solaris运行时链接程序搜索路径的最简单方法是使用crle,但是在执行此操作时需要非常小心,因为如果打破它,您可以很容易地使系统无法使用!要将/usr/local/bin添加到链接器路径:

# crle -u -l /usr/local/lib

完成后,请自行调用crle以验证新的搜索路径.

另一种方法是将路径编译为二进制文件本身:

$gcc -Wl,-rpath,/usr/local/lib -o test test.o -lstdc++

以上是一个更好的选择,因为二进制文件可以在其他系统上工作,而无需调整链接器路径.

标签:c,gcc,solaris
来源: https://codeday.me/bug/20190816/1669855.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有