linux环境下编译so库和编译可执行文件

linux环境下编译so库和编译可执行文件,第1张

gcc -fPIC -shared caculate.c -o libcaculate.so

-fPIC 压制警告

-shared 动态库

-o 生成目标的文件名

caculate.c

gcc -rdynamic -o main main.c

-rdynamic 生成可执行文件

-o 目标文件名

main是linux环境下的一个可执行文件。

main.c

gcc -c main.c -o main.o

gcc -c minus.c -o minus.o

gcc -c mulit.c -o mulit.o

gcc -c plus.c -o plus.o

gcc main.o minus.o mulit.o plus.o -o myapp

理论上安装支持环境,之后64位的gcc编译成32位程序,就加-m32参数即可。

当然还一个办法是装个32位的gcc。

另外,交叉编译也适用于x86架构。

不过这么编译经常会出现各种问题,所以编译32位的程序,最好还是用32位系统。

不一定重装,用chroot和setarch命令配合即可弄出一个32位的子系统。

一般64位系统最好不要安装32位库的-dev,经常有冲突,强行安装会破坏64位环境,头文件并不像共享库分得那么完美。

我觉得比较好的做法是,重新把某一个文件夹当成rootfs,在里面安装各种32位的库和库-dev,然后给gcc传递参数"--sysroot=路径"就可以让gcc重新选取那个文件夹为rootfs,而不再认为/为rootfs。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存