Skip to content

GCC 16.1.0 交叉编译出错 #371

@lengjingzju

Description

@lengjingzju

修复补丁

https://github.com/lengjingzju/cbuild-ng/blob/main/oss/network/protocol/acl/patch/0001-fix-compile-failure.patch

问题1:strchr 混用 const char *char *

某个报错如下:

/home/lengjing/data/cbuild-ng/output/cortex-a78/objects/acl/acl-3.6.7/lib_acl/src/private/private_vstream.c:692:13: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
  692 |         ptr = strchr(addr, ':');
      |             ^
[ 62%] Building CXX object acl_cpp/CMakeFiles/acl_cpp_static.dir/src/mqtt/mqtt_ack.cpp.o
[ 62%] Building C object acl/CMakeFiles/acl_shared.dir/src/private/private_vstream.c.o
[ 62%] Building C object acl/CMakeFiles/acl_static.dir/src/private/sem.c.o
/home/lengjing/data/cbuild-ng/output/cortex-a78/objects/acl/acl-3.6.7/lib_acl/src/private/private_vstream.c: 在函数‘private_vstream_connect_ex’中:
/home/lengjing/data/cbuild-ng/output/cortex-a78/objects/acl/acl-3.6.7/lib_acl/src/private/private_vstream.c:692:13: error: assignment discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers]
  692 |         ptr = strchr(addr, ':');
      |  

此问题涉及到下面4个文件

lib_acl/src/net/connect/acl_inet_connect.c
lib_acl/src/private/private_vstream.c
lib_acl/src/stdlib/acl_getopt.c
lib_acl/src/stdlib/string/acl_mystring.c

问题2:CMAKE_SHARED_LINKER_FLAGS被覆盖造成交叉编译出错

修复手段

sed -i 's/set(CMAKE_SHARED_LINKER_FLAGS "/set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /g' `grep -rl CMAKE_SHARED_LINKER_FLAGS`

复现方法

使用cbuild-ng编译环境,配置编译环境参考 README

git clone https://github.com/lengjingzju/cbuild-ng.git
cd cbuild-ng
source scripts/build.env                # 选择一个环境,例如22
make loadconfig                         # 加载默认配置
make toolchain                          # 编译最新的交叉编译工具链gcc-16.1.0 (做一次即可)
rm -f oss/network/protocol/acl/patch/0001-fix-compile-failure.patch # 先删除补丁,避免编译通过
make acl                                # 编译acl(连依赖包也编译了)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions