大部分参考这位大神的资料
- 分析依赖关系。
通过分析Cmakelist.txt得出了一些依赖关系。
libkvsWebrtcClient.so 依赖项如下:
libkvspicUtils.a libkvspicState.a libssl.so libcrypto.so libsrtp2.a . libusrsctp.so
libkvsWebrtcSignalingClient.so 依赖项如下:
libkvsCommonLws.a libwebsockets.a libkvspicUtils.a libkvspicState.a libssl.so libcrypto.so
kvsWebrtcClientMaster可执行程序:
libkvsWebrtcClient.so libkvsWebrtcSignalingClient.so libkvspicUtils.a libkvsCommonLws.a libwebsockets.a
kvsWebrtcClientViewer可执行程序:
libkvsWebrtcClient.so libkvsWebrtcSignalingClient.so libkvspicUtils.a libkvsCommonLws.a libwebsockets.a
amazon-kinesis-video-streams-producer-c-master
kvsCommonLws -> src/source/Common/.c
src/source/Common/Lws/.c
依赖的库libcrypto.so libssl.so libwebsocket.so libkvspicUtils.so
amazon-kinesis-video-streams-pic-master
kvspicState -》 src/state/src/.c
无依赖
kvspicUtils -》 src/utils/src/.c
target_link_libraries(kvspicUtils ${CMAKE_DL_LIBS} Threads::Threads)
- 开始对需要的依赖库进行交叉编译
(1)libsrtp
./configure --prefix=$(pwd)/Bin_XS7300 --host=arm-linux CC=/opt/xs-linux/xs7300/csky-abiv2-ux-linuxv3615/bin/csky-linux-uclibcabiv2-gcc CXX=/opt/xs-linux/xs7300/csky-abiv2-ux-linuxv3615/bin/csky-linux-uclibcabiv2-g++ CFLAGS=-Os
make & make install
(2)usrsctp
在这里插入代码片
(3)mbedtls
CC=csky-linux-uclibcabiv2-gcc cmake -DCMAKE_INSTALL_PREFIX=$(pwd)/Bin_XS7300 -DUSE_SHARED_MBEDTLS_LIBRARY=On -DCMAKE_BUILD_TYPE=Release -DENABLE_TESTING=OFF -DENABLE_PROGRAMS=OFF ../
(4)Libevent
./autogen.sh;
./configure --prefix=$(pwd)/Bin_XS7300 CFLAGS=-I/home/crb/FFIPC-lib/temp/xs7300/third-party/openssl/include/ LDFLAGS=-L/home/crb/FFIPC-lib/temp/xs7300/third-party/openssl/lib --host=arm-linux CC=csky-linux-uclibcabiv2-gcc CXX=csky-linux-uclibcabiv2-g++
Make;
Make install;
(5)Libwebsocket
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DDEBUG=ON -DCMAKE_TOOLCHAIN_FILE=/usr/local/share/cmake-3.17/Modules/XS7300_toolchain.cmake \
-DLWS_WITH_SHARED=0 \
-DLWS_WITHOUT_SERVER=ON \
-DLWS_WITHOUT_TESTAPPS=ON \
-DLWS_WITH_ZLIB=OFF \
-DLWS_WITHOUT_EXTENSIONS=ON \
-DLWS_WITH_ZIP_FOPS=OFF \
-DLWS_MAX_SMP=1 \
-DLWS_HAVE_HMAC_CTX_new=1 \
-DLWS_HAVE_EVP_MD_CTX_free=1 \
-DLWS_HAVE_X509_VERIFY_PARAM_set1_host=1 \
-DLWS_WITH_LIBEVENT=ON -DLIBEVENT_INCLUDE_DIRS="/home/crb/FFIPC-lib/src/third-party/libs/amazon-kinesis-video-streams-webrtc-sdk-c-master/Library/XS7300/include/libevent/include" -DLIBEVENT_LIBRARIES="/home/crb/FFIPC-lib/src/third-party/libs/amazon-kinesis-video-streams-webrtc-sdk-c-master/Library/XS7300/lib/libevent.so " \
-DLWS_WITH_SSL=ON -DOPENSSL_INCLUDE_DIR="/home/crb/FFIPC-lib/temp/xs7300/third-party/openssl/include" -DLWS_OPENSSL_LIBRARIES="/home/crb/FFIPC-lib/temp/xs7300/third-party/openssl/lib/libssl.so;/home/crb/FFIPC-lib/temp/xs7300/third-party/openssl/lib/libcrypto.so" ..
make
这个是网上找来的,经过测试发现调用Libwebsocket库的时候一直会报错。“trace/breakpoint trap”
查了好久,发现把-DLWS_WITH_LIBEVENT=ON -DLIBEVENT_INCLUDE_DIRS="/home/crb/FFIPC-lib/src/third-party/libs/amazon-kinesis-video-streams-webrtc-sdk-c-master/Library/XS7300/include/libevent/include" -DLIBEVENT_LIBRARIES="/home/crb/FFIPC-lib/src/third-party/libs/amazon-kinesis-video-streams-webrtc-sdk-c-master/Library/XS7300/lib/libevent.so " \ 这些去掉重新编译就可以了。