macos gcc dylib @rpath 动态库,相对路径

本文介绍在MacOS环境下如何通过gcc命令编译动态库,并使用@rpath实现绿色包的构建过程。文章详细记录了从源代码到最终可执行文件的每一步配置细节。

最近跨平台编译一个第三方库,想编译成能独立运行的绿色包(除了基础的C库),遇到一些常见问题,做了以下实验:

项目目录结构如下

├── bin
├── lib
│   ├── hello.c
│   └── world.c
└── main.c

world.c 

#include<stdio.h>

void world(void)

{

printf("world.\n");

}

hello.c

#include <stdio.h>

void world(void);

void hello(void)

{

printf("hello\n");

world();

}

main.c

void hello(void);

int main(void)

{

hello();

}

编译world, hello dylib

gcc -c hello.c world.c

gcc world.o -dynamiclib -o libworld.dylib -install_name @rpath/../lib/libworld.dylib

gcc hello.o -dynamiclib -o libhello.dylib -L. -lworld -install_name @rpath/../lib/libhello.dylib

编译main

gcc main.c -o ./bin/test -lhello -lworld -L./lib -Wl,-rpath ./</
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值