导航:首页 > 文件教程 > g编译so文件

g编译so文件

发布时间:2021-10-25 20:42:18

Ⅰ 怎么让gcc编译出来的so文件不依赖于libgcc

/*main.c*/
#include<stdio.h>
intmain(intargc,char*argv[]){
fprintf(stderr,"argc:%d ",argc);
inti;
for(i=0;i<argc;i++){
fprintf(stderr,"argv[%d]:%s ",i,argv[i]);
}
return0;
}


time gcc -O2 main.c -o main
ldd ./main 返回
linux-vdso.so.1 => (0x00007fff9fbfe000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f0e88001000)
/lib64/ld-linux-x86-64.so.2 (0x00007f0e883e6000)
size main 查看大小
text data bss dec hex filename
1408 560 16 1984 7c0 main
静态编译(加上-static参数):

timegcc-O2-staticmain.c-omain
ldd./main返回“不是动态可执行文件”。
sizemain查看大小
textdatabssdechexfilename
78276275329632799926c34b6main

Ⅱ 请问我有一个.so文件,如何在Linux下编程使用呢

-lxx

xx是你的.so文件名

其实使用方法和你使用数学库函数是一样的,源代码中添加

#include <math.h>,编译的时候,加上-lm参数。

注:linux下的.so文件为共享库,相当于windows下的dll文件。

(2)g编译so文件扩展阅读:

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地址是MYPATH
gcc d.c -o d -LMYPATH -lXXX

注意不是-llibXXX

test.c文件和一个test.h,这两个文件要生成libsotest.so文件。然后我还有一个testso.c文件,在这个文件里面调用libsotest.so中的函数。

编写的过程中,首先是编译so文件,我没有编写makefile文件,而是参考的2里面说的直接写的gcc命令。

因为so文件里面没有main函数,所以是不可执行的,所以编译的时候要加上-c,只生成目标文件。

Ⅲ 如何用gcc编译生成动态链接库*.so文件 动态库

http://www.linuxidc.com/Linux/2012-09/70502.htm

Ⅳ 如何用gcc编译器生成动态链接库*.so文件(动态库)求解

生成动态链接库的命令行为:
gcc -fPIC -shared -o libstr.so
当将main.c和动态链接库进行连接生成可执行文件 的命令如下:
gcc main.c -L./ -lstr -o main或者gcc -o main main.c -L./ -lstr
测试是否动态链接,如果列出libstr.so, 那么应该是连接正常了ldd main注:1)-L.:表示连接的库在当前的目录中。

Ⅳ (gcc)C++如何加载.so文件

Ⅵ 怎么用gcc生成.so文件

Linux下文件的类型是不依赖于其后缀名的,但一般来讲:
.o,是目标文件,相当于版windows中的.obj文件
.so 为共享库权,是shared object,用于动态连接的,和dll差不多
.a为静态库,是好多个.o合在一起,用于静态连接
.la为libtool自动生成的一些共享库,vi编辑查看,主要记录了一些配置信息。可以用如下命令查看*.la文件的格式 $file *.la
*.la: ASCII English text
所以可以用vi来查看其内容。

Ⅶ LLINUX GCC 编译C使用自定义动态链接库.so的问题

1. 可以参考如下关于库文件的文章:http://numanal.com/?p=129
2. 在编译文件时最好用-L指明自定义库的存在回目录, 利用如下任一语句答(.so文件与.c文件在同一目录):
gcc test.c -o test2 -L./verify.so
gcc test.c -o test2 -L.
3. 你这里在的问题应该与编译器的某些兼容性有关, 在实际编写程序的时候最好按gcc的语法规范走, 避免不必要的错误.

Ⅷ 如何用gcc编译生成动态链接库*.so文件

生成动态链接库的命令行为:
gcc -fPIC -shared -o libstr.so
当将main.c和动态链接库进行连接生成可执行专文件 的命令如下:
gcc main.c -L./ -lstr -o main或者属gcc -o main main.c -L./ -lstr
测试是否动态链接,如果列出libstr.so, 那么应该是连接正常了ldd main注:1)-L.:表示连接的库在当前的目录中。

Ⅸ 如何用gcc命令生成一个.so文件或者.a文件

你想生成动态的,就是动态的。想生成静态的就是静态的。

你看到里面有一个文件叫Makefile没有。这个文件里面的规则决定了生成动态还是静态的。绝大多数都是动态的。

生成方法:
用shell进入到这个目录
执行命令
make

即可。

更为详尽的操作,可以打开README文件,看看里面的说明。

Ⅹ 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.c
gcc -L/home/aaa/lib -lst -Wl,-rpath=/home/aaa/lib -o test test.c

阅读全文

与g编译so文件相关的资料

热点内容
重生之刘涛怀孕 浏览:984
大数据引领慢病 浏览:572
盒马生鲜app怎么买 浏览:511
苹果tumblr教程 浏览:48
sm爱好者都用哪些APP 浏览:311
不可能的世界txt 浏览:48
苹果6s手机摔掉漆 浏览:449
男主囚禁女主灭了她的国家 浏览:841
男人看的电影网站 浏览:390
车展推广app有哪些 浏览:787
云学app哪个好 浏览:498
因为什么对编程感兴趣 浏览:161
linux获取内核时间 浏览:926
iphonehome键变硬 浏览:32
所有文件onion 浏览:841
word写作格式 浏览:1
网页中文件及文件夹的命名规则 浏览:105
水蜜桃电子书txt全集下载 浏览:850
豫剧电影农村片 浏览:26
javaprivate类继承 浏览:487

友情链接