t113-c-curl使用

recodemo / 2023-08-16 / 原文

先复制文件到要用到的项目中

注意:复制.so文件在linux中不可以直接复制粘贴,必须要在linux命令行输入cp到指定的路径才可以,不然只会复制到软链接

改一下cmake

cmake_minimum_required(VERSION 3.12.4)

SET(CMAKE_C_COMPILER /home/momo/Tina-Linux/prebuilt/gcc/linux-x86/arm/toolchain-sunxi-musl/toolchain/bin/arm-openwrt-linux-muslgnueabi-gcc)
SET(CMAKE_CXX_COMPILER /home/momo/Tina-Linux/prebuilt/gcc/linux-x86/arm/toolchain-sunxi-musl/toolchain/bin/arm-openwrt-linux-muslgnueabi-g++)

project(lcd_lvgl VERSION 1.0)

set(CMAKE_INSTALL_PREFIX /home/momo/Tina-Linux/exsample/youchat/build)
#set(LINK_LIBRARIES "${LINK_LIBRARIES} -lcurl" )

#file(GLOB curlso /home/momo/Tina-Linux/exsample/lcd_lvgl/curl/ *.so)

#包含lvgl的子库

include_directories(/home/momo/Tina-Linux/exsample/youchat/curl)

#创建exe的可执行程序
add_executable(youchat you.c)

#链接所需要的库
set(LINK_DIR /home/momo/Tina-Linux/exsample/youchat/curl)
add_library(curll SHARED IMPORTED)
set_target_properties(
        curll
        PROPERTIES IMPORTED_LOCATION
        ${LINK_DIR}/libcurl.so
)

#link_directories(${LINK_DIR})
target_link_libraries(youchat curll)

这样的写法是这篇文章写的,导入第三方库的教程

https://blog.csdn.net/lftaoyuan/article/details/107057699

cmake_minimum_required(VERSION 3.12.4)

SET(CMAKE_C_COMPILER /home/momo/Tina-Linux/prebuilt/gcc/linux-x86/arm/toolchain-sunxi-musl/toolchain/bin/arm-openwrt-linux-muslgnueabi-gcc)
SET(CMAKE_CXX_COMPILER /home/momo/Tina-Linux/prebuilt/gcc/linux-x86/arm/toolchain-sunxi-musl/toolchain/bin/arm-openwrt-linux-muslgnueabi-g++)

project(lcd_lvgl VERSION 1.0)

set(CMAKE_INSTALL_PREFIX /home/momo/Tina-Linux/exsample/youchat/build)
#set(LINK_LIBRARIES "${LINK_LIBRARIES} -lcurl" )

#file(GLOB curlso /home/momo/Tina-Linux/exsample/lcd_lvgl/curl/ *.so)

#包含lvgl的子库

include_directories(/home/momo/Tina-Linux/exsample/youchat/curl)

#创建exe的可执行程序
add_executable(youchat you.c)

#链接所需要的库
set(LINK_DIR /home/momo/Tina-Linux/exsample/youchat/curl)
#add_library(curll SHARED IMPORTED)
#set_target_properties(
 #       curll
 #       PROPERTIES IMPORTED_LOCATION
 #       ${LINK_DIR}/libcurl.so
#)

link_directories(${LINK_DIR})
target_link_libraries(youchat libcurl.so)

而这种写法则是在这篇文章学的,但是并没有编译成功,不知道为什么,我觉得应该是cmake没有对库进行解码缓存什么的,那link_directories又是干啥的,这个是在自己做的库中用的但是既然都有缓存了为什么还要这个函数

https://www.jianshu.com/p/354c64b0e26b

最后找到了原因:

cmake_minimum_required(VERSION 3.12.4)

SET(CMAKE_C_COMPILER /home/momo/Tina-Linux/prebuilt/gcc/linux-x86/arm/toolchain-sunxi-musl/toolchain/bin/arm-openwrt-linux-muslgnueabi-gcc)
SET(CMAKE_CXX_COMPILER /home/momo/Tina-Linux/prebuilt/gcc/linux-x86/arm/toolchain-sunxi-musl/toolchain/bin/arm-openwrt-linux-muslgnueabi-g++)
SET(LINK_DIR /home/momo/Tina-Linux/exsample/youchat/curl)
project(lcd_lvgl VERSION 1.0)

set(CMAKE_INSTALL_PREFIX /home/momo/Tina-Linux/exsample/youchat/build)
#set(LINK_LIBRARIES "${LINK_LIBRARIES} -lcurl" )

#file(GLOB curlso /home/momo/Tina-Linux/exsample/lcd_lvgl/curl/ *.so)

#包含lvgl的子库

link_directories(${LINK_DIR})

include_directories(/home/momo/Tina-Linux/exsample/youchat/curl)

#创建exe的可执行程序
add_executable(youchat you.c)

#链接所需要的库

#add_library(curll SHARED IMPORTED)
#set_target_properties(
 #       curll
 #       PROPERTIES IMPORTED_LOCATION
 #       ${LINK_DIR}/libcurl.so
#)


target_link_libraries(youchat PUBLIC curl)

不知道为什么库文件路径设置必须要在生成可执行文件之前,卡了我半天

那么就可以直接使用了

如何链接库文件?

https://blog.csdn.net/KYJL888/article/details/85109782