项目地址:https://github.com/mpromonet/v4l2rtspserver
通过apt-get install 安装 liblivemedia-dev、liblog4cpp5-dev、libasound2-dev
等库。
有些依赖的库编译机上找不到,也要下载源码交叉编译后再依赖:
# libssl
target_link_libraries(${PROJECT_NAME} ${PROJECT_SOURCE_DIR}/libs3rd/libssl.a)
# libalsa
target_link_libraries(${PROJECT_NAME} ${PROJECT_SOURCE_DIR}/libs3rd/libasound.a)
add_definitions(-DHAVE_ALSA)
# 依赖libasound.a时必须依赖下面的库,否则报错https://code84.com/289048.html
target_link_libraries(${PROJECT_NAME} ${CMAKE_DL_LIBS} )
# liblog4cpp
target_link_libraries(${PROJECT_NAME} ${PROJECT_SOURCE_DIR}/libs3rd/liborocos-log4cpp.a)
add_definitions(-DHAVE_LOG4CPP)
排雷
- CMakeLists里设置交叉编译变量无效
就算在CMakeLists里设置交叉编译变量也要在project定义之后设置,否则无效。
通过命令行设置交叉编译变量
https://www.thinbug.com/q/17355798
cmake clean -DCMAKE_C_COMPILER=`which aarch64-linux-gnu-gcc-8` -DCMAKE_CXX_COMPILER=`which aarch64-linux-gnu-g++-8` ..
- /usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: /usr/lib/x86_64-linux-gnu/libssl.so: error adding symbols: file in wrong format
/etc/opt/pkg/clion-2022.1.3/bin/cmake/linux/bin/cmake --build /home/xinyi/code/cplus/mgylived/cmake-build-arm_linux_gnu --target v4l2rtspserver -j 6
[1/1] Linking CXX executable v4l2rtspserver
FAILED: v4l2rtspserver
: && /usr/bin/aarch64-linux-gnu-g++ -O3 -DNDEBUG -rdynamic CMakeFiles/v4l2rtspserver.dir/main.cpp.o -o v4l2rtspserver -Wl,-rpath,/usr/lib/x86_64-linux-gnu: liblibv4l2rtspserver.a -Wl,-Bdynamic /usr/lib/x86_64-linux-gnu/libssl.so -Wl,-Bstatic ../alsa-lib-1.2.3.2/build/lib/libasound.a -ldl v4l2wrapper/libv4l2wrapper.a -pthread -Wl,-Bdynamic /usr/lib/x86_64-linux-gnu/libcrypto.so -Wl,-Bstatic && :
/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: /usr/lib/x86_64-linux-gnu/libssl.so: error adding symbols: file in wrong format
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
没有明白为什么aarch的交叉编译器会去x86里搜索库?明明路径都指定了
但是如果把源码里CMakeLists.txt里第65行的find_package(OpenSSL QUIET)
注释掉,就不会报这个错误了。
0 条评论