Ⅰ 关于linux中的so文件
你知道windows下的dll文件吗???其实和linux下的so文件是一回事,,so文件也版是编译好了的二进制的权链接库文件,,,一般来说都是c或c++编译出来的,,java的话通常是用的字节码,也就是class文件。。你自己写一个 helloworld的c程序,然后在命令行下用编译器编译gcc -c helloworld.c -o hello.o这样编译出来的结果就是那样的东西了。。这样的文件是不能直接运行的。。
Ⅱ linux中把.c的文件编译成.so
就跟用VS编译dll或者lib文件差不多,把代码编译完成以后,命名为相应的后缀就好了。例如:gcc -c -fPIC libst.c生成 libst.o然后gcc -shared -fPIC -o libst.so libst.o生成 libst.so 动态链接库把libst.so拷贝到系统默认库目录下,比如 /lib, /usr/lib 下假定有 test.c 要引用这个库gcc -lst -o test test.c然后就可以了假如不能把libst.so拷贝到默认库目录下,比方说放在了/home/aaa/lib 下那么就用这样的语句来编译test.cgcc -L/home/aaa/lib -lst -Wl,-rpath=/home/aaa/lib -o test test.c
Ⅲ 如何查看 linux 下 so文件
方法一:文件名已经带有版本号:这种情况下很容易就能够看到软链指向的文件的版本号回是 1.0.1方法二答:当文件名不带版本号时:如下所示使用readelf -a ***.so读取出文件的版本号,不过此时只能读取到主版本号,version:1方法三:如果文件名不带版本号,且又想知道具体的版本号的时候怎么办呢?这时候只能使用傻瓜方法,生成md5值与已知版本号的共享库相对比了。$ md5sum fcrypt.so.1.0.1 fcrypt.so.1.0.1 $ md5sum fcrypt.so fcrypt.so 两个md5值一致,由此得出版本应该是1.0.1。
Ⅳ linux上.so文件可以直接运行吗
那肯定能被执行啊,看下面图 内核中是把EXEC类型和DYN(就是DYN)都放开执行的
执行是能执行(如/lib64/libc-xx.so),但如果不特殊处理下 一般so执行都会报段错误的, 给你的so加个.interp节指定下连接器地址并指定下入口函数就可以了正常执行了哈
Ⅳ linux中,a文件与.so文件有什么关系吗
.a和.so文件都是函数库文件。库是一组预先编译好的函数的集合,库文件的名字以内lib开头,随后的容部分指明这是什么库(例如c代表C语言库,m代表数学库)。.a代表的是静态函数库,当同时运行多个程序并且都使用到同一个函数库的函数时,内存中就会有同一函数的多份副本,会消耗大量宝贵的内存。.so是共享函数库,可以克服.a函数库的不足。当一个程序使用共享函数库时,程序本身不再包含函数代码,而只是引用共享代码,当实际调用时,共享库才被加载到内存中。.a文件类似于Windows下的.lib文件,.so文件类似于Windows下面的.dll文件,这样就好理解了。
Ⅵ linux so文件的全称是什么
so 为共享库,是shared object,用于动态连接的,和dll差不多
Ⅶ Linux 下关于.so 在 Makefile 中的引用问题
你的 -L路径可正确?/root/vorx-work/test_so/Classes -lToolClasses下面可包含 libToolClasses.la?
Ⅷ linux的C编程,怎么使用so文件
linux下的.so文件为共享库,相当于windows下的dll文件,使用方法如下:在你的工程源代码里包含.h头文件,然后可以调用动态库里的函数,在链接的时候加上如下编译器参数:-l xx.so如果你的so文件是以lib开头的,还可以直接这样使用:-lxxxx是你的.so文件名其实使用方法和你使用数学库函数是一样的,源代码中添加 #include <math.h>,编译的时候,加上-lm参数。
Ⅸ linux so是什么 文件
.so文件代表Linux的共享函数库文件,程序运行时可能会使用到里面的函数代码。当一个程序需要.so共享函数库文件时,系统自动会把它加载到内存中使用。相当于Windows系统里面的dll动态链接库文件。
Ⅹ 请问我有一个.so文件,如何在Linux下编程使用呢
-lxx
xx是你的.so文件名
其实使用方法和你使用数学库函数是一样的,源代码中添加
#include <math.h>,编译的时候,加上-lm参数。
注:linux下的.so文件为共享库,相当于windows下的dll文件。
(10)linuxso文件扩展阅读:
linux下编写调用so文件实例
.so是Linux(Unix)下的动态链接库. 和.dll类似.
比如:
文件有: a.c, b.c, c.c
gcc -c a.c
gcc -c b.c
gcc -c c.c
gcc -shared libXXX.so a.o b.o c.o
要使用的话也很简单. 比如编译d.c, 使用到libXXX.so中的函数, libXXX.so地址是MYPATHgcc d.c -o d -LMYPATH -lXXX
注意不是-llibXXX
test.c文件和一个test.h,这两个文件要生成libsotest.so文件。然后我还有一个testso.c文件,在这个文件里面调用libsotest.so中的函数。
编写的过程中,首先是编译so文件,我没有编写makefile文件,而是参考的2里面说的直接写的gcc命令。
因为so文件里面没有main函数,所以是不可执行的,所以编译的时候要加上-c,只生成目标文件。
未经允许不得转载:山九号 » linuxso文件|请问我有一个so文件如何在Linux下编程使用呢