如果我想链接静态库并删除未使用的符号.txt我应该如何处理 Cmakelist
How I should to do with Cmakelist.txt if i want to link static lib and remove unused symbols
现在我想将'libbz2.a'链接到我的程序,但是当我编译程序时,exe的大小将变成以前的两倍。 CmakeLists.txt是
find_library(Bz2_LIBRSRY NAMES libbz2.a)
....
target_link_libraries(${Bz2_LIBRSRY})
install( TARGETS
....
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)
由于某些原因我不能使用共享库,只能使用静态库,我知道这个 gcc -Os -fdata-sections -ffunction-sections 测试.cpp -o test -wl,--gc-sections 可以做到,但我不知道如何在 CmakeLi 中做到这一点 那么,我应该如何使用camke使exe变小呢?感谢所有人回答
如果您更关心可执行文件的大小,请使用共享库而不是静态库。
find_library(Bz2_LIBRSRY NAMES libbz2.so)
然后将其链接到您的target
target_link_libraries(${target_name} PRIVATE ${Bz2_LIBRSRY})
${target_name}
将替换为您拥有的目标名称。
另外,${Bz2_LIBRSRY}
对我来说似乎是一个错字。
我知道这个
gcc -Os -fdata-sections -ffunction-sections test.cpp -o test -Wl,--gc-sections
可以做到
你可以这样做:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Os -fdata-sections -ffunction-sections")
相关文章:
- 为什么我应该在异常处理中使用std::cerr而不是std::cout
- 如果我想链接静态库并删除未使用的符号.txt我应该如何处理 Cmakelist
- 我应该如何处理:错误 C2039 "分配":不是 Visual Studio 2017 中"cl::string"的成员?
- 我应该始终处理参考返回矢量吗?
- Dokan:我应该自己处理文件共享和访问权限吗?
- 我应该如何处理信用卡号验证算法
- 在处理读写时,我应该锁定哪个部分
- 我应该/可以/必须如何处理我的C++项目所依赖的dll
- 我应该如何处理类型而不是方法的多重继承冲突
- 我应该在两个地方处理WSARecv()的错误吗
- 我应该如何处理编写一段确定订阅包节省的代码的逻辑
- 我应该如何处理用户输入
- 我应该如何处理 c++ 中的字符串参数
- 我应该如何重组此事件处理代码
- 我应该如何编写国际化的异常处理程序
- 从 Linux 到 Windows 交叉编译时,我应该如何处理字符编码
- 我应该如何处理只能由工厂类使用的setter方法
- 我应该如何处理基于C++的dll中的错误
- 我应该在现有的代码库中添加异常处理吗?
- 我应该如何处理enet网络库的端序