linux混编项目总结

Bgfx 在linux下项目的一些编译总结:

  1. 譬如三方库里用include/bx/bx.h这样的文件,我们在代码中引起的方式是
    #include “bx/bx.h”,那么在cmake文件中,target_include_directories假如你包含了三方文件目录include又包含了bx目录,
    xcode和androidStudio是能正常处理的,但是linux下不行,会报各种误导你的错误,譬如c链接失败,c++链接失败,云里雾里。
    此时只用包含include目录即可,不需要bx目录了,如果代码中直接导入bx.h,那么就必须include/bx目录。
  2. 如果最后生成的动态库,那么所有的静态库打包的时候都必须加上-fPIC编译,-fPIC作用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code),则产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意位置,都可以正确的执行。这正是共享库所要求的,共享库被加载时,在内存的位置不是固定的。
    不然,生成库要报错。export CXXFLAGS="-fPIC"
  3. 好多时候代码编译不过,是因为语法支持问题,需要制定你的c++编译版本,例如在cmake中指定set(CMAKE_CXX_STANDARD 14)
  4. 有时候gcc编译不行,请切换到clang编译。
  5. linux上编译,默认装了opencv的话,编译会去找电脑上的opencv,不晓得为啥子。譬如你代码是opencv4,电脑是opencv2,那么用的opencv2.
  6. 代码中用到的系统库一定写到头文件上,同名的头文件,如果引用自己的,记得使用路径标记,不然容易编译出错。
  7. 高版本的编译器是不支持数组长度用float来表示的,必须int。大家代码在定义数组的时候,不要用float表示长度。
  8. 远程使用linux电脑推荐使用TeamViewer,非常方便。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值