Linux系统下执行可执行文件提示“no such file or directory”

Linux系统下执行可执行文件提示“no such file or directory”,第1张

如果不在PATH变量指定的目录下,需要使用绝对路径调用可执行文件

/usr/numeca/fine90_2/LINUX/install/flex64/lmgrd

如果在当前目录下 可以通过 ./lmgrd 来执行

一、可执行文件/二进制文件依赖共享

ldd命令用来查看可执行文件依赖的共享库文件。

$ ldd --help

Usage: ldd [OPTION]... FILE...

--help print this help and exit

--version print version information and exit

-d, --data-relocs process data relocations

-r, --function-relocs process data and function relocations

-u, --unused print unused direct dependencies

-v, --verbose print all information

示例:

$ ldd helloworld

二、共享库依赖共享库关系

上面的ldd命令无法查看共享库的依赖关系,因为共享库本身并不是可执行文件,我们可以使用

objdump -x libhelloworld.so | grep NEEDED

其中,libhelloworld.so是你的库名称。

附:

readelf命令用于读取ELF Header信息

1.?提高linux中默认同时打开的最大文件数量(默认是1024)

最便捷的方法是在/etc/profile文件中加入ulimit?-n?最大开启数量

但是这种方法无法从根本上查出什么原因导致java打开了这么多的文件

2.?java端调查开启文件多的原因

?Linux下查看进程打开了哪些文件

?lsof?-p??进程id????->??打开的具体文件

?lsof?-p??进程id|wc?-l???->??打开文件的数量

通过调查发现,java开了很多TYPE为FIFO(Linux中的管道)的文件,因此联想到有可能是java代码中的流没有正常关闭或者释放导致的。

而且Java在Linux下执行命令的时候需要用到Process类,这个类在使用后需要destroy()掉,否者也会导致文件数开启的过多


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8743886.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-20
下一篇2023-04-20

发表评论

登录后才能评论

评论列表(0条)

    保存