macos dylib 函数符号导出控制

先上测试代码 dylib_test.h

#ifndef _DYLIB_TEST_H_
#define _DYLIB_TEST_H_
 
#ifdef __cplusplus
extern "C" {
#endif
 
int  add(int x, int y);
int  sub(int x, int y);
 
#ifdef __cplusplus
}
#endif
 
#endif // _DYLIB_TEST_H_

dylib_test.cpp

#include <iostream>
using namespace std;

#include "dylib_test.h"

int  add(int x, int y)
{
	cout << "add" << endl;
	return x + y;
}
 
int  sub(int x, int y)
{
	return x - y;
}

int mul(int x, int y)
{
	return x * y;
}

指定导出符号的文件 export.txt

_add
_sub

去符号分两步

第一步,编译

g++ dylib_test.cpp -dynamiclib -Wl,-exported_symbols_list,export.txt -o libdylib_test.dylib

第二步,使用strip去掉所有本地符号

strip -x libdylib_test.dylib

 

查看

localhost:dylib_strip niubucai$ nm  libdylib_test.dylib  | grep -v "U "

0000000000000f80 T _add

0000000000001130 T _sub

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值