.so文件全称
命令:$ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so 不用该标志外部程序无法连接。相当于一个可执行文件。
so文件是Linux下的程序函数库,即编译好的可以供其他程序使用的代码和数据。
1、so文件就跟.dll文件差不多。
2、一般来说,so文件就是常说的动态链接库, 都是C或C++编译出来的。与Java比较它通常是用的Class文件(字节码)。
3、Linux下的so文件时不能直接运行的,一般来讲,.so文件称为共享库。
4、so文件使用方法
(1)动态库的编译。这里有一个头文件:so_test.h,三个.c文件:test_a.c、test_b.c、test_c.c,我们将这几个文件编译成一个动态库:libtest.so。
命令:$ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so 不用该标志外部程序无法连接。相当于一个可执行文件。
如何处理java.lang.UnsatisfiedLinkError
1、请查看控制台的错误信息a:如果控制台的消息是类似java.lang.UnsatisfiedLinkError: no MRChkLib in java.library.path,Error loading library MRChkLib这样的错误信息,那么是因为MRChkLib.dll没有拷贝到windows的System32目录下. (MRChkLib.dll是加密锁的JAVA接口文件,文件在报表安装目录DogDriver\JavaAPI下可以找到) 并且要注意PATH环境变量中要包含System32目录。
(如果服务器操作系统是Linux,那么使用报表安装目录DogDriver\JavaAPI 下的libMRChkLib.so文件,将libMRChkLib.so复制到WebServer的启动bin目录。
如果在这个目录下仍然出现can not load library错误,请设置系统环境变量LD_LIBRARY_PATH的值为libMRChkLib.so所在的目录。
编译时用的so和运行时用的so不一样会有用吗
有用。
so文件是Linux下的程序函数库,即编译好的可以供其他程序使用的代码和数据。
1、so文件就跟.dll文件差不多。
2、一般来说,so文件就是常说的动态链接库, 都是C或C++编译出来的。与Java比较它通常是用的Class文件(字节码)。
3、Linux下的so文件时不能直接运行的,一般来讲,.so文件称为共享库。
4、so文件使用方法
(1)动态库的编译。这里有一个头文件:so_test.h,三个.c文件:test_a.c、test_b.c、test_c.c,我们将这几个文件编译成一个动态库:libtest.so。
命令:$ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so 不用该标志外部程序无法连接。相当于一个可执行文件。
(2)动态库的链接
这里有个程序源文件 test.c 与动态库 libtest.so 链接生成执行文件 test:
命令:$ gcc test.c -L. -ltest -o test
命令:$ ldd test执行test,可以看到它是如何调用动态库中的函数的。