当前位置: 技术问答>linux和unix
在线等几个简单问题解答,答出一个在线加50分。
来源: 互联网 发布时间:2015-07-02
本文导语: 1.用进程ps -ef 查出某个进程名,用什么命令可以看出该可执行文件在那个目录下 另外在某个目录下,全是.c文件,用什么命令找出那些文件中包含某个指定的 字符串。 2.我看计算机世界上的生成动态连接库的...
1.用进程ps -ef 查出某个进程名,用什么命令可以看出该可执行文件在那个目录下
另外在某个目录下,全是.c文件,用什么命令找出那些文件中包含某个指定的
字符串。
2.我看计算机世界上的生成动态连接库的方法,但编译有问题,请指出:
动态库的实现:
myfunc.c
int myadd(int a1, int a2)
{
return a1+a2;
}
动态库的引用:
#incoude
extern int myadd(int, int);
int main()
{
printf(“myadd(1,2)=%dn”,myadd(1, 2));
return 0;
}
makefile文件:
all:libmyfunc.so.1.0 testlib
libmyfunc.so.1.0:myfunc.o
ld -m elf_i386 -shared -soname libmyfunc.so.1 -o libmyfunc.so.1.0 myfunc.o
ln -sf libmyfunc.so.1.0 libmyfunc.so.1
ln -sf libmyfunc.so.1 libmyfunc.so
testlib:testlib.c
gcc -Wall -o2 -L. -lmyfunc -o testlib testlib.c
myfunc.o:myfunc.c
gcc -c -Wall -o2 -fPIC -o myfunc.o myfunc.c
clean:
rm -f libmyfunc.so* testlib *.o
#extern link use dll test
运行时报:
./testlib: error while loading shared libraries: libmyfunc.so.1: cannot open
谁能帮我解释一下,makefile的意思,并怎么运行啊。libmyfunc.so.1.0只能放到本目录下。
另外在某个目录下,全是.c文件,用什么命令找出那些文件中包含某个指定的
字符串。
2.我看计算机世界上的生成动态连接库的方法,但编译有问题,请指出:
动态库的实现:
myfunc.c
int myadd(int a1, int a2)
{
return a1+a2;
}
动态库的引用:
#incoude
extern int myadd(int, int);
int main()
{
printf(“myadd(1,2)=%dn”,myadd(1, 2));
return 0;
}
makefile文件:
all:libmyfunc.so.1.0 testlib
libmyfunc.so.1.0:myfunc.o
ld -m elf_i386 -shared -soname libmyfunc.so.1 -o libmyfunc.so.1.0 myfunc.o
ln -sf libmyfunc.so.1.0 libmyfunc.so.1
ln -sf libmyfunc.so.1 libmyfunc.so
testlib:testlib.c
gcc -Wall -o2 -L. -lmyfunc -o testlib testlib.c
myfunc.o:myfunc.c
gcc -c -Wall -o2 -fPIC -o myfunc.o myfunc.c
clean:
rm -f libmyfunc.so* testlib *.o
#extern link use dll test
运行时报:
./testlib: error while loading shared libraries: libmyfunc.so.1: cannot open
谁能帮我解释一下,makefile的意思,并怎么运行啊。libmyfunc.so.1.0只能放到本目录下。
|
1. ps先查进程的pid,然后到/proc/下面看这个pid的目录,下面exe这个链接就是执行文件,包括路径。
查字符串: 到那个目录下,执行:grep 字符串 *.c
查字符串: 到那个目录下,执行:grep 字符串 *.c
|
2.如果是放当前目录,需要设置LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. 这样运行testlib就可以了。
|
同意pacman2000(pacman)