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 "

扫描二维码关注公众号,回复: 4820004 查看本文章

0000000000000f80 T _add

0000000000001130 T _sub

猜你喜欢

转载自blog.csdn.net/niu91/article/details/85613075
今日推荐