Linux上制作可执行的共享库示例
来源:互联网 发布:windows组管理策略 编辑:程序博客网 时间:2024/05/19 02:40
http://bbs.hadoopor.com/thread-3313-1-1.html
x.cpp为共享库libx.so的实现,b.cpp为可执行b的实现。
x.cpp文件内容:
#include <stdio.h>
#include <stdlib.h>
// 使用C++作为编译器
void woo()
{
printf("woo/n");
}
// foo作为共享库的入口,必须为C函数
extern "C" foo()
{
printf("foo/n");
exit(0); // 请注意这里必须调用,否则输出foo后会有段错误
}
b.cpp文件内容:
int main()
{
extern void woo();
extern "C" void foo();
woo();
foo();
return 0;
}
编译x.cpp为可执行的共享库:
g++ -g -o libx.so -fPIE -pie -nostartfiles -Wl,-e,foo -rdynamic x.cpp
-fPIE -pie是保证共享库可以执行,其中-fPIE编译参数,表示生成与位置无关的可执行代码(-fPIC只是生成与位置无关的非可执行代码),-pid是链接参数;-Wl,-e,foo指定共享库的入口函数,相当于可执行程序的main函数;如果没有-nostartfiles,则链接时会报main函数未定义;-rdynamic也是必须的,否则编译b.cpp时会报找不到foo定义;如需查看详细的编译链接过程,加上-v参数。请注意不能包含-shared参数,否则运行共享库时直接段错误。
编译b.cpp为可执行文件:
g++ -g -o b -L. -lx b.cpp
成功之后,libx.so和b都是可执行的了,其中libx.so的入口是foo,而b的入口是main函数。
- Linux上制作可执行的共享库示例
- Linux上制作可执行的共享库示例
- Linux上制作可执行的共享库示例
- 创建可执行的共享库
- 生成可执行的共享库
- 运行远程服务器上共享的可执行程序
- linux上的两种可执行程序
- (转)Linux下制作可执行的JAR文件包
- Linux下制作可执行的JAR文件包
- 用Linux makeself制作自解压的可执行程序
- Linux下共享库的创建和使用示例
- Linux下共享库的制作与使用
- Linux下共享库的制作与使用
- 制作可执行的jar文件
- 制作可执行的jar文件
- 可执行的jar包制作
- Linux查看上可执行程序或运行进程的依赖库
- linux下可执行程序如何定位共享库文件以及如何让系统找到用户指定的库
- Linux基础编程-文件操作open,lseek,read,write,close
- turning point
- jQuery-利用上下左右键移动输入焦点
- Linux系统新手学习的11点建议
- 博客收藏
- Linux上制作可执行的共享库示例
- 关于ExtJS TextField 下边界会消失的bug
- vim——打开多个文件、同时显示多个文件、在文件之间切换
- 启动workflow错误----FMC31050E解决
- 修改发布到weblogic服务器的项目访问名称
- android 绘图
- extern用法详解(转)
- pb插入ole控件点击insert control时pb应用程序自动关闭解决思路
- Android 内存监测工具 DDMS --> Heap