linux编写带有导出函数的so文件

extern "C" int add(int a, int b)
{
    return a+b;
}

extern "C" int sub(int a, int b)
{
    return a-b;
}


编译参数:Makefile

TARGET = libtest.so
COMPILE = -fPIC
COMPILE += -c
LINK = -shared
CC = g++
GCC = gcc
BUILD_CACHE_DIR=.buildCacheDir

ALLSRC = $(wildcard *.cpp)
ALL_OBJ = $(patsubst %.cpp, $(BUILD_CACHE_DIR)/%.o, $(filter %.cpp, $(ALLSRC)))
.PHYONE:all
all:createDir $(TARGET)
createDir:
	@mkdir -p $(BUILD_CACHE_DIR) 2>/dev/null
#	@mkdir -p $(INSTALL_PATH)/ 2>/dev/null
	
	
$(TARGET):$(ALL_OBJ)
	@echo 
	@echo "------------------------------------------------------------------"
	@echo "==== Linking $@ === "
	@echo "------------------------------------------------------------------"
	$(CC) $(ALL_OBJ) $(LINK) -o $@
	@echo "------------------------------------------------------------------"
	
#编译规则
$(BUILD_CACHE_DIR)/%.o:%.cpp
	$(CC) $(COMPILE) $< -o $@

$(BUILD_CACHE_DIR)/%.o:%.c
	$(GCC) $(COMPILE) $< -o $@

clean:
	-rm -rf $(BUILD_CACHE_DIR)	

查看so文件中导出函数的指令
 nm -D 7z.so
objdump -tT 7z.so

导出指定的函数的方法是使用:__attribute__((visibility("default")))

不打算导出的方法使用__attribute__((visibility("hidden")))

在链接程序的时候使用-fvisibility=hidden

 

http://liulixiaoyao.blog.51cto.com/1361095/814329  此blog有更加详细的介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值