把lib打包到so中

简介: 首先 --whole-archive 和 --no-whole-archive 是ld专有的命令行参数,gcc 并不认识,要通gcc传递到 ld,需要在他们前面加-Wl,字串。--whole-archive 可以把 在其后面出现的静态库包含的函数和变量输出到动态库,--no-whole-archive 则关掉这个特性。

首先 --whole-archive 和 --no-whole-archive 是ld专有的命令行参数,gcc 并不认识,要通gcc传递到 ld,需要在他们前面加-Wl,字串。

--whole-archive 可以把 在其后面出现的静态库包含的函数和变量输出到动态库,--no-whole-archive 则关掉这个特性。

比如你要把 liba.a  libb.a libc.a 输出到 libabc.dll(或libabc.so)时应该这么写:

libabc.dll:liba.c libb.a libc.a

       gcc  -shared -o $@ -L. -Wl,--whole-archive -la -lb -lc -Wl,--no-whole-archive

在--whole-archive作用下的库里不能有函数同名。

 

目录
相关文章
|
1天前
|
Java Linux Apache
jar 解压app.jar到指定文件夹
要将 JAR 文件(如 `app.jar`)解压到指定文件夹,可使用 Java 自带的 `jar` 工具、Apache Ant、7-Zip 或 Python 脚本。方法包括命令行操作(如 `jar xf app.jar -C /path/to/destination/folder`)、Ant 构建文件、7-Zip 图形界面或命令行,以及 Python 的 `zipfile` 模块。选择适合的方法即可轻松完成解压。
|
Shell
加载/usr/local/lib中的so库问题
加载/usr/local/lib中的so库问题
156 1
|
Java
使用代码把一个目录打包成jar
使用代码把一个目录打包成jar
139 0
|
Java
mvn执行编译时使用lib下的jar包
mvn执行编译时使用lib下的jar包
71 0
CMake教程5:可执行程序调用lib
CMake教程5:可执行程序调用lib
352 0
|
JavaScript
Nodejs pkg打包
nodejs打包
620 0
Nodejs pkg打包
pkg 打包
pkg 打包
230 0
|
Java Maven
maven工具引入lib下的jar文件
maven工具引入lib下的jar文件
135 0
|
Java 编译器 应用服务中间件
JavaWeb - 除 Maven 之外的本地 JAR 包为什么要放在 lib 文件夹里?
JavaWeb - 除 Maven 之外的本地 JAR 包为什么要放在 lib 文件夹里?
367 0
|
Android开发 C++
【Android 安装包优化】使用 lib7zr.a 静态库处理压缩文件 ( 交叉编译 lib7zr.a 静态库 | 安卓工程导入静态库 | 配置 CMakeLists.txt 构建脚本 )(二)
【Android 安装包优化】使用 lib7zr.a 静态库处理压缩文件 ( 交叉编译 lib7zr.a 静态库 | 安卓工程导入静态库 | 配置 CMakeLists.txt 构建脚本 )(二)
228 0
【Android 安装包优化】使用 lib7zr.a 静态库处理压缩文件 ( 交叉编译 lib7zr.a 静态库 | 安卓工程导入静态库 | 配置 CMakeLists.txt 构建脚本 )(二)