13-Openwrt libubox ustream

流缓冲管理,ustream_fduloop_fd有什么不一样呢?ustream_fd内部其实就是uloop_fd,与fopen和open类似,fopen的内部也是open加上流缓冲管理。

struct ustream_fd {
    struct ustream stream;
    struct uloop_fd fd;
};

ustream相关的函数

void ustream_fd_init(struct ustream_fd *s, int fd)

void ustream_init_defaults(struct ustream *s)

void ustream_free(struct ustream *s)

ustream的应用在uhttpd的socket监听里面有使用到

bool uh_accept_client(int fd, bool tls)
{
    static struct client *next_client;
    struct client *cl;
    unsigned int sl; 
    int sfd;
    static int client_id = 0;
    struct sockaddr_in6 addr;

    if (!next_client)
        next_client = calloc(1, sizeof(*next_client));

  
Install the project... -- Install configuration: "Release" -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/assert.h -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/avl-cmp.h -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/avl.h -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/blob.h -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/blobmsg.h -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/blobmsg_json.h -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/json_script.h -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/kvlist.h -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/list.h -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/md5.h -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/runqueue.h -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/safe_list.h -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/udebug-proto.h -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/udebug.h -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/ulog.h -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/uloop.h -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/usock.h -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/ustream.h -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/utils.h -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/vlist.h -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/lib/libubox.so.20240329 -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/lib/libubox.so -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/lib/libubox.a -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/lib/libblobmsg_json.so.20240329 -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/lib/libblobmsg_json.so -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/lib/libblobmsg_json.a -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/bin/jshn -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/lib/libjson_script.so.20240329 -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/lib/libjson_script.so -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/share/libubox/jshn.sh -- Installing: /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/lib/lua/uloop.so make[4]: Leaving directory '/opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64' touch /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/.built rm -rf /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/.pkgdir/libubox.installed /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/.pkgdir/libubox mkdir -p /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/.pkgdir/libubox install -d -m0755 /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/.pkgdir/libubox/lib/ install -m0644 /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/lib/libubox.so.* /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/.pkgdir/libubox/lib/ touch /opt/project/prplos1020/prplos/board/airoha_an75xx/sdk/er_phase2/prplos/prplos-v3.0.1/build_dir/target-aarch64_cortex-a53_musl/libubox-2024-03-29-eb9bcb64/.pkgdir/libubox.installed 上面编译时成功生成了.so.*文件 同样的编译文件,下面没有生成,请分析原因Install the project... -- Install configuration: "Release" -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/assert.h -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/avl-cmp.h -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/avl.h -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/blob.h -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/blobmsg.h -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/blobmsg_json.h -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/json_script.h -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/kvlist.h -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/list.h -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/md5.h -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/runqueue.h -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/safe_list.h -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/udebug-proto.h -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/udebug.h -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/ulog.h -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/uloop.h -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/usock.h -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/ustream.h -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/utils.h -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/include/libubox/vlist.h -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/lib/libubox.so -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/lib/libubox.a -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/lib/libblobmsg_json.so -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/lib/libblobmsg_json.a -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/bin/jshn -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/lib/libjson_script.so -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/share/libubox/jshn.sh -- Installing: /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/lib/lua/uloop.so make[5]: Leaving directory '/opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64' touch /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/.built rm -rf /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/.pkgdir/libubox.installed /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/.pkgdir/libubox mkdir -p /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/.pkgdir/libubox install -d -m0755 /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/.pkgdir/libubox/lib/ install -m0644 /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/lib/libubox.so.* /opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/.pkgdir/libubox/lib/ install: cannot stat '/opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/ipkg-install/usr/lib/libubox.so.*': No such file or directory Makefile:117: recipe for target '/opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/.pkgdir/libubox.installed' failed make[4]: *** [/opt/project/prplos1020/prplos/board/qca_ipq53xx/sdk/12.2/build_dir/target-aarch64/libubox-2024-03-29-eb9bcb64/.pkgdir/libubox.installed] Error 1
最新发布
11-13
<think> 我们有两个编译日志:第一个成功,第二个失败。失败的原因是安装步骤中尝试复制libubox.so.*文件时找不到文件。 对比两个日志,我们发现: 成功案例(airoha_an75xx)中,安装步骤包含: -- Installing: .../ipkg-install/usr/lib/libubox.so.20240329 -- Installing: .../ipkg-install/usr/lib/libubox.so (符号链接) 失败案例(qca_ipq53xx)中,安装步骤只有: -- Installing: .../ipkg-install/usr/lib/libubox.so -- Installing: .../ipkg-install/usr/lib/libubox.a 注意:失败案例中没有生成带版本号的后缀文件(如libubox.so.20240329),因此后续步骤(复制libubox.so.*)失败。 原因分析: 1. 在成功案例中,编译生成的共享库文件带有版本号(如libubox.so.20240329),同时创建了一个无版本号的符号链接(libubox.so指向带版本号的库)。 2. 在失败案例中,只生成了无版本号的共享库文件(libubox.so)和静态库(libubox.a),没有带版本号的文件,也没有创建符号链接。因此,当尝试复制libubox.so.*时,没有匹配的文件。 为什么没有生成带版本号的共享库? 可能的原因: - 编译配置不同:可能第一个项目(airoha_an75xx)在配置中启用了版本化的共享库,而第二个项目(qca_ipq53xx)没有。 - 构建系统(如CMake)的配置差异:检查CMakeLists.txt中是否设置了版本号。 在libubox的构建系统中,通常会在CMakeLists.txt中设置库的版本。例如: set(LIBRARY_VERSION "20240329") add_library(ubox SHARED ...) set_target_properties(ubox PROPERTIES VERSION ${LIBRARY_VERSION} SOVERSION ${LIBRARY_VERSION}) 如果这个版本变量没有被设置,或者设置为空,那么就不会生成带版本号的库文件。 解决方案: 1. 检查构建配置:查看两个项目中libubox的CMake配置,确认是否设置了版本号。 2. 检查环境变量:可能在第二个项目中,构建时没有正确设置版本号。 3. 检查构建日志:在编译过程中,是否有关于设置库版本的输出。 另外,注意失败案例中,安装步骤没有生成带版本号的库,但是后续的打包步骤(在.pkgdir中)却试图复制带版本号的库(install -m0644 .../libubox.so.*),这显然会导致失败。 因此,需要调整打包步骤,使其能够兼容没有版本号的情况,或者确保在构建时生成版本号。 具体到OpenWrt的构建系统,可以检查libubox的Makefile(在package/feeds/packages/libubox/或类似位置)中是否正确地传递了版本信息。 临时解决方案: 在失败案例的构建目录中,可以尝试手动创建符号链接,但这不是根本解决办法。 根本解决办法: 1. 确保在配置阶段设置库版本号。 2. 修改打包脚本,使其在没有带版本号的库文件时,只复制无版本号的库文件。 但是,由于是同一个libubox源码,在两个不同的平台(airoha_an75xx和qca_ipq53xx)上构建,所以可能是平台特定的配置问题。 建议步骤: 1. 检查两个项目中libubox的编译配置(config.cmake或CMakeCache.txt),查看关于版本设置的变量。 2. 在失败项目中,尝试在编译之前设置版本号,例如: export LIBRARY_VERSION=20240329 3. 或者修改构建脚本(如果使用OpenWrt的package.mk),确保传递版本信息。 由于失败案例中,安装步骤只安装了libubox.so(而不是带版本号的文件),我们可以推断在编译时没有设置版本属性。因此需要检查构建系统。 另外,注意成功案例中,构建目录是:target-aarch64_cortex-a53_musl,而失败案例是:target-aarch64。这可能是不同的目标架构,但通常不会影响版本号的设置。 结论:问题在于第二个项目(qca_ipq53xx)在构建libubox时没有生成带版本号的共享库,导致后续打包步骤失败。 因此,需要检查第二个项目中libubox的构建配置,确保设置正确的版本号。 </think> ### 问题分析:共享库版本文件缺失的根本原因 从两个编译日志对比可以看出,关键差异在于共享库版本文件(如`libubox.so.20240329`)的生成与安装: #### 成功案例(airoha_an75xx): ```text -- Installing: .../libubox.so.20240329 -- Installing: .../libubox.so # 符号链接 ``` #### 失败案例(qca_ipq53xx): ```text -- Installing: .../libubox.so # 仅基础文件 install: cannot stat '.../libubox.so.*': No such file or directory ``` ### 根本原因分析 1. **共享库版本控制机制失效**: - CMake未正确生成带版本号的共享库文件(如`.so.20240329`) - 缺少版本文件导致后续`install -m0644 .../libubox.so.*`命令失败 2. **CMake配置差异**: ```cmake # 正确配置应包含版本设置 set_target_properties(ubox PROPERTIES VERSION ${PROJECT_VERSION} # 缺失此配置 SOVERSION ${PROJECT_API_VERSION} ) ``` 3. **构建环境差异**: - 目标架构不同:`aarch64_cortex-a53_musl` vs `aarch64` - 工具链配置可能导致版本符号链接生成失败 4. **安装脚本缺陷**: ```bash install -m0644 .../libubox.so.* # 未检查文件是否存在 ``` ### 解决方案 #### 方法1:修复CMake配置(推荐) 在`CMakeLists.txt`中确保包含: ```cmake project(libubox VERSION 2024.03.29) # 设置项目版本 add_library(ubox SHARED ${SOURCES}) set_target_properties(ubox PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION 1 # 或使用 ${PROJECT_VERSION_MAJOR} ) ``` #### 方法2:修改安装脚本 在Makefile中增加存在性检查: ```bash # 修改前 install -m0644 .../libubox.so.* ... # 修改后 if [ -f .../libubox.so.* ]; then install -m0644 .../libubox.so.* ... fi ``` #### 方法3:强制生成符号链接 在构建后步骤添加: ```bash cd ${LIBDIR} ln -sf libubox.so libubox.so.${VERSION} ``` ### 调试步骤 1. **检查构建产物**: ```bash find build_dir -name "libubox.so*" ``` 2. **验证CMake配置**: ```bash grep -r "VERSION" CMakeLists.txt ``` 3. **查看共享库属性**: ```bash readelf -d build_dir/target-*/libubox.so | grep SONAME ``` 4. **对比编译标志**: ```bash diff -u config1/CMakeCache.txt config2/CMakeCache.txt | grep "SHARED_LIB" ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Creator_Ly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值