随笔分类 -  编译相关(ndk,gcc)

摘要:1、原因: GCC 5在编译时会将std::string类型按c++11下std::__cxx11::basic_string<char> 来处理,这时如果你调用的库在编译时未启用c++11特性则其中的std::string实际上是std::basic_string<char> ,如果将c++11下 阅读全文
posted @ 2021-11-23 16:27 鸭子船长 阅读(2499) 评论(0) 推荐(0) 编辑
摘要:最近遇到个问题,在链接OpenVINO的时候,需要将libinference_engine.so与libinference_engine_legacy.so都链接进去,但如果在CMakeLists里设置add_definitions(-D _GLIBCXX_USE_CXX11_ABI=0),就无法正 阅读全文
posted @ 2021-11-22 20:56 鸭子船长 阅读(1228) 评论(0) 推荐(0) 编辑
摘要:编译与链接有四个过程: (1)预处理 (2)编译 (3)汇编 (4)链接 (1)预处理源文件和头文件被预处理成一个.i文件、(-E表示只进行预处理) g++ -E hello.cpp -o hello.i -E:意味着只执行到预编译,直接输出预编译结果。 预处理过程主要处理那些源文件中的以“#”开始 阅读全文
posted @ 2020-07-06 22:57 鸭子船长 阅读(1146) 评论(0) 推荐(0) 编辑
摘要:這篇的對象是 static function,static function 若沒有其它 function 去存取的話,在 compile 時,會發生 unused error,可以在 function 前加上 attribute((unused)) 避免出現 unused error,但如果 fu 阅读全文
posted @ 2019-08-07 17:11 鸭子船长 阅读(1641) 评论(0) 推荐(0) 编辑
摘要:1、openmp加载,cmake3.9之后内置了openmp 2、引用的c++11不同会引发编译错误 可通过ANDROID_STL设置 3、可设置输出路径,ARCHIVE_OUTPUT_DIRECTORY表征静态库路径,LIBRARY_OUTPUT_DIRECTORY为动态库路径 4、 阅读全文
posted @ 2018-08-10 14:55 鸭子船长 阅读(4187) 评论(0) 推荐(0) 编辑
摘要:生成cmake编译所需的文件 阅读全文
posted @ 2018-08-09 22:23 鸭子船长 阅读(1017) 评论(0) 推荐(0) 编辑
摘要:1、生成静态库 生成静态库使用ar工具,其实ar是archive的意思 2、生成动态库 用gcc来完成,由于可能存在多个版本,因此通常指定版本号: nm列出的符号有很多, 常见的有三种:: 一种是在库中被调用,但并没有在库中定义(表明需要其他库支持),用U表示; 一种是在库中定义的函数,用T表示,这 阅读全文
posted @ 2018-08-07 15:27 鸭子船长 阅读(601) 评论(0) 推荐(0) 编辑
摘要:基礎知識 GNU ld 最基本的連結單位是 object 檔,即單一個編譯單元所對應的編譯結果,通常副檔名是 .o。在 object 檔所維護的資訊當中,連結器主要關注的是: 輸出符號: 這是定義在 object 檔內,且可提供給外界使用的符號。 未定義符號: 這是被 object 檔使用、需要從外 阅读全文
posted @ 2018-08-07 15:23 鸭子船长 阅读(2137) 评论(0) 推荐(0) 编辑
摘要:编译静态库进入动态库时,有时会出现编译通过,调用时却出现symbol查找不到的问题。 这是因为链接静态库时,只会将编译时用到的符号添加进动态库,有些符号是希望动态加载,在编译的时候并未显示调用。 这时需要将静态库全部链接。 -Wl,option Pass option as an option to 阅读全文
posted @ 2018-08-07 15:15 鸭子船长 阅读(2881) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示