先上测试代码 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