C++交叉编译mongoose网络库

2024-08-08 12:39:23 浏览数 (1)

环境及准备:

  1. mongoose源码
  2. 交叉编译工具

实现过程:

  1. 修改源码为C 版本 cp mongoose.c mongoose.cc
  2. 交叉编译 -问题1 -问题2 arm-linux-g mongoose.cc -fPIC -shared -Wno-psabi -lrt -o libmongoose.so

测试过程:

  1. 使用源码中的 http-server 进行测试, 路径为: tutorials/http/http-server
  2. 修改 main.c 为 main.cc
  3. 编写 CMakeLists.txt
代码语言:txt复制
cmake_minimum_required(VERSION 3.6)
project(test)

set(SO_LIB lib)
link_directories(${SO_LIB})

add_executable(${PROJECT_NAME} 
    main.cc)

target_link_libraries(${PROJECT_NAME} 
    mongoose
    #rt # 如果动态库编译时没有使用 -lrt 也可以在此处引用
    )
  1. 上传到运行环境并测试

解决问题:

  1. va_list 警告

解决办法: 加入 -Wno-psabi 编译选项

参考: note: the mangling of 'va_list' has changed in GCC 4.4

  1. clock_gettime 未定义的引用

解决办法: 编译时加入动态库 librt.so 即在编译命令中加入 -lrt

参考: undefined reference to `clock_gettime' 链接错误的解决思路

总结:

好像大部分C 的网络库都要求C 11, 开发环境没有C 11支持, 于是便使用C语言网络库. 交叉编译后, 动态库只有211KB, 适合嵌入式WEB开发.

0 人点赞