【求助】【已解决】构建openharmony遇到/startup/init/init链接报错
1、场景说明 使用的oh 3.2.2-RELEASE版本代码,因为编译其它架构的需要升级aarch64交叉编译工具链版本到clang 16.0.0,编译qemu-arm64-linux-min模拟产品。 首先,使用官方提供的prebuilt的clang 12.0.1能够正常构建。 2、报错信息 hb set选择qemu-arm64-linux-min&#x
1、场景说明
使用的oh 3.2.2-RELEASE版本代码,因为编译其它架构的需要升级aarch64交叉编译工具链版本到clang 16.0.0,编译qemu-arm64-linux-min模拟产品。
首先,使用官方提供的prebuilt的clang 12.0.1能够正常构建。
2、报错信息
hb set选择qemu-arm64-linux-min,hb build构建,期间还处理了一些新版clang编译选项差异导致的问题,最终卡在了以下这个init链接报错。
[OHOS INFO] [109/235] /usr/bin/env "../../build/toolchain/gcc_link_wrapper.py" --output="startup/init/init" --strip="../../prebuilts/clang/oh
os/linux-x86_64/llvm/bin/llvm-strip" --unstripped-file="./exe.unstripped/startup/init/init" --mini-debug -- ../../prebuilts/clang/ohos/linux
-x86_64/llvm/bin/clang++ -L../../prebuilts/clang/ohos/linux-x86_64/llvm/lib/aarch64-linux-ohos/c++ -rdynamic -Wl,--version-script=gen/base/st
artup/init/interfaces/innerkits/init_module_engine/libinit_stub_versionscript.map.txt -Wl,--pack-dyn-relocs=android+relr -Wl,--fatal-warnings
-Wl,--build-id=md5 -fPIC -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -Wl,--as-needed -fuse-ld=lld -Wl,-z,max-page-size=4096 -Wl,-
-icf=all -Wl,--color-diagnostics -Wl,--no-undefined -Wl,--exclude-libs=libunwind_llvm.a -Wl,--exclude-libs=libc++_static.a -Wl,--exclude-libs
=libvpx_assembly_arm.a --target=aarch64-linux-ohos -Wl,--hash-style=gnu -march=armv8-a -Werror -Wl,--warn-shared-textrel -Wl,-O2 -Wl,--gc-sec
tions -Wl,--gdb-index --sysroot=obj/third_party/musl -nostdlib -Lobj/third_party/musl/usr/lib/aarch64-linux-ohos -L../../prebuilts/clang/ohos
/linux-x86_64/llvm/lib/clang/12.0.1/lib/aarch64-linux-ohos -L../../prebuilts/clang/ohos/linux-x86_64/llvm/lib/aarch64-linux-ohos/c++ -Wl,--wa
rn-shared-textrel -Bdynamic -Wl,-z,nocopyreloc -pie -o "./exe.unstripped/startup/init/init" obj/third_party/musl/usr/lib/aarch64-linux-ohos/S
crt1.o obj/third_party/musl/usr/lib/aarch64-linux-ohos/crti.o -Wl,--start-group @"startup/init/init.rsp" -lc++ ../../prebuilts/clang/ohos/l
inux-x86_64/llvm/lib/clang/12.0.1/lib/aarch64-linux-ohos/libclang_rt.builtins.a -lc -lc++abi -ldl -lm -Wl,--end-group obj/third_party/musl/u
sr/lib/aarch64-linux-ohos/crtn.o
[OHOS ERROR] [109/235] /usr/bin/env "../../build/toolchain/gcc_link_wrapper.py" --output="startup/init/init" --strip="../../prebuilts/clang/o
hos/linux-x86_64/llvm/bin/llvm-strip" --unstripped-file="./exe.unstripped/startup/init/init" --mini-debug -- ../../prebuilts/clang/ohos/linu
x-x86_64/llvm/bin/clang++ -L../../prebuilts/clang/ohos/linux-x86_64/llvm/lib/aarch64-linux-ohos/c++ -rdynamic -Wl,--version-script=gen/base/s
tartup/init/interfaces/innerkits/init_module_engine/libinit_stub_versionscript.map.txt -Wl,--pack-dyn-relocs=android+relr -Wl,--fatal-warning
s -Wl,--build-id=md5 -fPIC -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -Wl,--as-needed -fuse-ld=lld -Wl,-z,max-page-size=4096 -Wl,
--icf=all -Wl,--color-diagnostics -Wl,--no-undefined -Wl,--exclude-libs=libunwind_llvm.a -Wl,--exclude-libs=libc++_static.a -Wl,--exclude-lib
s=libvpx_assembly_arm.a --target=aarch64-linux-ohos -Wl,--hash-style=gnu -march=armv8-a -Werror -Wl,--warn-shared-textrel -Wl,-O2 -Wl,--gc-se
ctions -Wl,--gdb-index --sysroot=obj/third_party/musl -nostdlib -Lobj/third_party/musl/usr/lib/aarch64-linux-ohos -L../../prebuilts/clang/oho
s/linux-x86_64/llvm/lib/clang/12.0.1/lib/aarch64-linux-ohos -L../../prebuilts/clang/ohos/linux-x86_64/llvm/lib/aarch64-linux-ohos/c++ -Wl,--w
arn-shared-textrel -Bdynamic -Wl,-z,nocopyreloc -pie -o "./exe.unstripped/startup/init/init" obj/third_party/musl/usr/lib/aarch64-linux-ohos/
Scrt1.o obj/third_party/musl/usr/lib/aarch64-linux-ohos/crti.o -Wl,--start-group @"startup/init/init.rsp" -lc++ ../../prebuilts/clang/ohos/
linux-x86_64/llvm/lib/clang/12.0.1/lib/aarch64-linux-ohos/libclang_rt.builtins.a -lc -lc++abi -ldl -lm -Wl,--end-group obj/third_party/musl/
usr/lib/aarch64-linux-ohos/crtn.o
[OHOS ERROR] FAILED: startup/init/init exe.unstripped/startup/init/init
[OHOS ERROR] /usr/bin/env "../../build/toolchain/gcc_link_wrapper.py" --output="startup/init/init" --strip="../../prebuilts/clang/ohos/linux-
x86_64/llvm/bin/llvm-strip" --unstripped-file="./exe.unstripped/startup/init/init" --mini-debug -- ../../prebuilts/clang/ohos/linux-x86_64/l
lvm/bin/clang++ -L../../prebuilts/clang/ohos/linux-x86_64/llvm/lib/aarch64-linux-ohos/c++ -rdynamic -Wl,--version-script=gen/base/startup/ini
t/interfaces/innerkits/init_module_engine/libinit_stub_versionscript.map.txt -Wl,--pack-dyn-relocs=android+relr -Wl,--fatal-warnings -Wl,--bu
ild-id=md5 -fPIC -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -Wl,--as-needed -fuse-ld=lld -Wl,-z,max-page-size=4096 -Wl,--icf=all
-Wl,--color-diagnostics -Wl,--no-undefined -Wl,--exclude-libs=libunwind_llvm.a -Wl,--exclude-libs=libc++_static.a -Wl,--exclude-libs=libvpx_a
ssembly_arm.a --target=aarch64-linux-ohos -Wl,--hash-style=gnu -march=armv8-a -Werror -Wl,--warn-shared-textrel -Wl,-O2 -Wl,--gc-sections -Wl
,--gdb-index --sysroot=obj/third_party/musl -nostdlib -Lobj/third_party/musl/usr/lib/aarch64-linux-ohos -L../../prebuilts/clang/ohos/linux-x8
6_64/llvm/lib/clang/12.0.1/lib/aarch64-linux-ohos -L../../prebuilts/clang/ohos/linux-x86_64/llvm/lib/aarch64-linux-ohos/c++ -Wl,--warn-shared
-textrel -Bdynamic -Wl,-z,nocopyreloc -pie -o "./exe.unstripped/startup/init/init" obj/third_party/musl/usr/lib/aarch64-linux-ohos/Scrt1.o ob
j/third_party/musl/usr/lib/aarch64-linux-ohos/crti.o -Wl,--start-group @"startup/init/init.rsp" -lc++ ../../prebuilts/clang/ohos/linux-x86_
64/llvm/lib/clang/12.0.1/lib/aarch64-linux-ohos/libclang_rt.builtins.a -lc -lc++abi -ldl -lm -Wl,--end-group obj/third_party/musl/usr/lib/aa
rch64-linux-ohos/crtn.o
[OHOS ERROR] ld.lld: error: version script assignment of 'LIBINIT_STUB_VERSIONSCRIPT' to symbol 'SystemReadParam' failed: symbol not defined
[OHOS ERROR] ld.lld: error: version script assignment of 'LIBINIT_STUB_VERSIONSCRIPT' to symbol 'InitAddGlobalInitHook' failed: symbol not de
fined
[OHOS ERROR] ld.lld: error: version script assignment of 'LIBINIT_STUB_VERSIONSCRIPT' to symbol 'InitAddPreParamServiceHook' failed: symbol n
ot defined
[OHOS ERROR] ld.lld: error: version script assignment of 'LIBINIT_STUB_VERSIONSCRIPT' to symbol 'InitAddPreParamLoadHook' failed: symbol not
defined
[OHOS ERROR] ld.lld: error: version script assignment of 'LIBINIT_STUB_VERSIONSCRIPT' to symbol 'InitAddPreCfgLoadHook' failed: symbol not de
fined
[OHOS ERROR] ld.lld: error: version script assignment of 'LIBINIT_STUB_VERSIONSCRIPT' to symbol 'InitAddPostCfgLoadHook' failed: symbol not d
efined
[OHOS ERROR] clang-16: error: linker command failed with exit code 1 (use -v to see invocation)
其中,prebuilts/clang/ohos/linux-x86_64/llvm目录下已经是clang 16.0.0版本工具链。
单独执行报错的链接命令,并增加-v选项,日志如下:
sam@builder:~/src/openharmony/out/qemu-arm-linux$ "../../build/toolchain/gcc_link_wrapper.py" --output="startup/init/init" --strip="../../pre
builts/clang/ohos/linux-x86_64/llvm/bin/llvm-strip" --unstripped-file="./exe.unstripped/startup/init/init" --mini-debug -- ../../prebuilts/c
lang/ohos/linux-x86_64/llvm/bin/clang++ -L../../prebuilts/clang/ohos/linux-x86_64/llvm/lib/aarch64-linux-ohos/c++ -rdynamic -Wl,--version-scr
ipt=gen/base/startup/init/interfaces/innerkits/init_module_engine/libinit_stub_versionscript.map.txt -Wl,--pack-dyn-relocs=android+relr -Wl,-
-fatal-warnings -Wl,--build-id=md5 -fPIC -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -Wl,--as-needed -fuse-ld=lld -Wl,-z,max-page-
size=4096 -Wl,--icf=all -Wl,--color-diagnostics -Wl,--no-undefined -Wl,--exclude-libs=libunwind_llvm.a -Wl,--exclude-libs=libc++_static.a -Wl
,--exclude-libs=libvpx_assembly_arm.a --target=aarch64-linux-ohos -Wl,--hash-style=gnu -march=armv8-a -Werror -Wl,--warn-shared-textrel -Wl,-
O2 -Wl,--gc-sections -Wl,--gdb-index --sysroot=obj/third_party/musl -nostdlib -Lobj/third_party/musl/usr/lib/aarch64-linux-ohos -L../../prebu
ilts/clang/ohos/linux-x86_64/llvm/lib/clang/12.0.1/lib/aarch64-linux-ohos -L../../prebuilts/clang/ohos/linux-x86_64/llvm/lib/aarch64-linux-oh
os/c++ -Wl,--warn-shared-textrel -Bdynamic -Wl,-z,nocopyreloc -pie -o "./exe.unstripped/startup/init/init" obj/third_party/musl/usr/lib/aarch
64-linux-ohos/Scrt1.o obj/third_party/musl/usr/lib/aarch64-linux-ohos/crti.o -Wl,--start-group @"startup/init/init.rsp" -lc++ ../../prebuil
ts/clang/ohos/linux-x86_64/llvm/lib/clang/12.0.1/lib/aarch64-linux-ohos/libclang_rt.builtins.a -lc -lc++abi -ldl -lm -Wl,--end-group obj/thi
rd_party/musl/usr/lib/aarch64-linux-ohos/crtn.o -v
clang version 16.0.0
Target: aarch64-unknown-linux-ohos
Thread model: posix
InstalledDir: /home/sam/src/openharmony/out/qemu-arm-linux/../../prebuilts/clang/ohos/linux-x86_64/llvm/bin
"/home/sam/src/openharmony/out/qemu-arm-linux/../../prebuilts/clang/ohos/linux-x86_64/llvm/bin/ld.lld" --sysroot=obj/third_party/mu[28/1836]
export-dynamic -EL -z relro --hash-style=gnu --eh-frame-hdr -m aarch64linux -export-dynamic -dynamic-linker /lib/ld-linux-aarch64.so.1 -o ./e
xe.unstripped/startup/init/init -L../../prebuilts/clang/ohos/linux-x86_64/llvm/lib/aarch64-linux-ohos/c++ -Lobj/third_party/musl/usr/lib/aarc
h64-linux-ohos -L../../prebuilts/clang/ohos/linux-x86_64/llvm/lib/clang/12.0.1/lib/aarch64-linux-ohos -L../../prebuilts/clang/ohos/linux-x86_
64/llvm/lib/aarch64-linux-ohos/c++ -Lobj/third_party/musl/usr/lib --version-script=gen/base/startup/init/interfaces/innerkits/init_module_eng
ine/libinit_stub_versionscript.map.txt --pack-dyn-relocs=android+relr --fatal-warnings --build-id=md5 -z noexecstack -z now -z relro -z defs
--as-needed -z max-page-size=4096 --icf=all --color-diagnostics --no-undefined --exclude-libs=libunwind_llvm.a --exclude-libs=libc++_static.a
--exclude-libs=libvpx_assembly_arm.a --hash-style=gnu --warn-shared-textrel -O2 --gc-sections --gdb-index --warn-shared-textrel -z nocopyrel
oc obj/third_party/musl/usr/lib/aarch64-linux-ohos/Scrt1.o obj/third_party/musl/usr/lib/aarch64-linux-ohos/crti.o --start-group obj/base/star
tup/init/services/init/adapter/init/init_adapter.o obj/base/startup/init/services/init/standard/init/device.o obj/base/startup/init/services/
init/standard/init/fd_holder_service.o obj/base/startup/init/services/init/standard/init/init.o obj/base/startup/init/services/init/standard/
init/init_cmdexecutor.o obj/base/startup/init/services/init/standard/init/init_cmds.o obj/base/startup/init/services/init/standard/init/init_
control_fd_service.o obj/base/startup/init/services/init/standard/init/init_jobs.o obj/base/startup/init/services/init/standard/init/init_mou
nt.o obj/base/startup/init/services/init/standard/init/init_reboot.o obj/base/startup/init/services/init/standard/init/init_service.o obj/bas
e/startup/init/services/init/standard/init/init_signal_handler.o obj/base/startup/init/services/init/standard/init/switch_root.o obj/base/sta
rtup/init/interfaces/innerkits/hookmgr/init/hookmgr.o obj/base/startup/init/interfaces/innerkits/modulemgr/init/modulemgr.o obj/base/startup/
init/services/init/init/init_capability.o obj/base/startup/init/services/init/init/init_common_cmds.o obj/base/startup/init/services/init/ini
t/init_common_service.o obj/base/startup/init/services/init/init/init_config.o obj/base/startup/init/services/init/init/init_group_manager.o
obj/base/startup/init/services/init/init/init_service_file.o obj/base/startup/init/services/init/init/init_service_manager.o obj/base/startup
/init/services/init/init/init_service_socket.o obj/base/startup/init/services/init/init/main.o obj/base/startup/init/interfaces/innerkits/ini
t_module_engine/init_module_engine_sources/init_modulemgr.o obj/base/startup/init/services/modules/bootchart/libbootchart_static/bootchart_st
atic.o obj/base/startup/init/services/modules/bootevent/libbootevent_static/bootevent.o obj/base/startup/init/services/modules/init_hook/init
hook/init_hook.o obj/base/startup/init/services/modules/init_hook/inithook/param_hook.o obj/base/startup/init/services/modules/reboot/librebo
ot_static/reboot_misc.o obj/base/startup/init/services/modules/reboot/libreboot_static/reboot_static.o obj/base/startup/init/interfaces/inner
kits/control_fd/libcontrolfd.a obj/base/startup/init/interfaces/innerkits/fd_holder/libfdholder.a obj/base/startup/init/interfaces/innerkits/
fs_manager/libfsmanager_static.a obj/base/startup/init/interfaces/innerkits/sandbox/libsandbox.a obj/base/startup/init/services/loopevent/lib
loopevent.a obj/base/startup/init/services/param/linux/libparam_init.a obj/base/startup/init/services/utils/libinit_utils.a obj/base/customiz
ation/config_policy/frameworks/config_policy/libconfigpolicy_util_for_init_static.a obj/base/security/access_token/interfaces/innerkits/nativ
etoken/libnativetoken.a obj/base/security/access_token/interfaces/innerkits/token_setproc/libtoken_setproc.a obj/base/startup/init/ueventd/li
bueventd_ramdisk_static.a obj/third_party/bounds_checking_function/libsec_static.a obj/third_party/cJSON/libcjson_static.a obj/foundation/fil
emanagement/storage_service/services/storage_daemon/libfscrypt/libfscryptutils_static.a obj/base/startup/init/services/param/base/libparamete
rbase_ext.a hiviewdfx/hilog_native/libhilog.so obj/base/startup/init/interfaces/innerkits/socket/libsocket.a obj/base/startup/init/services/l
og/libinit_log.a obj/third_party/musl/usr/lib/aarch64-linux-ohos/libc.so obj/third_party/musl/usr/lib/aarch64-linux-ohos/libcrypt.a obj/third
_party/musl/usr/lib/aarch64-linux-ohos/libdl.a obj/third_party/musl/usr/lib/aarch64-linux-ohos/libm.a obj/third_party/musl/usr/lib/aarch64-li
nux-ohos/libpthread.a obj/third_party/musl/usr/lib/aarch64-linux-ohos/libresolv.a obj/third_party/musl/usr/lib/aarch64-linux-ohos/librt.a obj
/third_party/musl/usr/lib/aarch64-linux-ohos/libutil.a obj/third_party/musl/usr/lib/aarch64-linux-ohos/libxnet.a -lc++ ../../prebuilts/clang/
ohos/linux-x86_64/llvm/lib/clang/12.0.1/lib/aarch64-linux-ohos/libclang_rt.builtins.a -lc -lc++abi -ldl -lm --end-group obj/third_party/musl/
usr/lib/aarch64-linux-ohos/crtn.o
ld.lld: error: version script assignment of 'LIBINIT_STUB_VERSIONSCRIPT' to symbol 'SystemReadParam' failed: symbol not defined
ld.lld: error: version script assignment of 'LIBINIT_STUB_VERSIONSCRIPT' to symbol 'InitAddGlobalInitHook' failed: symbol not defined
ld.lld: error: version script assignment of 'LIBINIT_STUB_VERSIONSCRIPT' to symbol 'InitAddPreParamServiceHook' failed: symbol not defined
ld.lld: error: version script assignment of 'LIBINIT_STUB_VERSIONSCRIPT' to symbol 'InitAddPreParamLoadHook' failed: symbol not defined
ld.lld: error: version script assignment of 'LIBINIT_STUB_VERSIONSCRIPT' to symbol 'InitAddPreCfgLoadHook' failed: symbol not defined
ld.lld: error: version script assignment of 'LIBINIT_STUB_VERSIONSCRIPT' to symbol 'InitAddPostCfgLoadHook' failed: symbol not defined
clang-16: error: linker command failed with exit code 1 (use -v to see invocation)
3、问题
这个LIBINIT_STUB_VERSIONSCRIPT符号是在哪里定义的?搜索了//base/startup目录下所有文件都没有找到。SystemReadParam等符号是可以从源代码中找到的。当然这个报错也有点不明确,在链接时到底是哪个符号没有找到。
=========分隔线 20230721 10:20=============
找到这个LIBINIT_STUB_VERSIONSCRIPT符号是在哪里使用了。查看//build/ohos/native_stub/native_stub.gni文件中定义(L231)的模板ohos_native_stub_versionscript的流程,它会生成一个version script文件来控制ohos_executable或ohos_shared_library目标对外输出的符号。
在日志中,这个version script文件是通过-Wl,--version-script=gen/base/startup/ini
t/interfaces/innerkits/init_module_engine/libinit_stub_versionscript.map.txt 这个参数传递给链接器的。这个文件的内容如下:
LIBINIT_STUB_VERSIONSCRIPT {
global:
SystemWriteParam;
SystemReadParam;
LoadParamsFile;
SplitString;
AddCmdExecutor;
RemoveCmdExecutor;
HookMgrAdd;
GetBootStageHookMgr;
InitAddGlobalInitHook;
InitAddPreParamServiceHook;
InitAddPreParamLoadHook;
InitAddPreCfgLoadHook;
InitAddPostCfgLoadHook;
InitModuleMgrInstall;
InitModuleMgrUnInstall;
StartupLog;
DoJobNow;
GetServiceExtData;
UpdateMiscMessage;
AddRebootCmdExecutor;
local:
*;
};
那么,问题就是链接时没有找到SystemReadParam等符号,应该是缺少了定义这些符号的.o或者库文件。
===========分隔线 20230721 16:05=========================
按照@c_c8008的提示,清理重新编译后还是相同报错,不过单独执行Link命令时,参数有差异,已经包含了libinit_module_engine.so库,但是仍然报找不到这几个符号。
sam@builder:~/src/openharmony/out/qemu-arm-linux$ "../../build/toolchain/gcc_link_wrapper.py" --output="startup/init/init" --strip=[104/1866]
builts/clang/ohos/linux-x86_64/llvm/bin/llvm-strip" --unstripped-file="./exe.unstripped/startup/init/init" --mini-debug -- ../../prebuilts/c
lang/ohos/linux-x86_64/llvm/bin/clang++ -L../../prebuilts/clang/ohos/linux-x86_64/llvm/lib/aarch64-linux-ohos/c++ -rdynamic -Wl,--version-scr
ipt=gen/base/startup/init/interfaces/innerkits/init_module_engine/libinit_stub_versionscript.map.txt -Wl,--pack-dyn-relocs=android+relr -Wl,-
-fatal-warnings -Wl,--build-id=md5 -fPIC -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -Wl,--as-needed -fuse-ld=lld -Wl,-z,max-page-
size=4096 -Wl,--icf=all -Wl,--color-diagnostics -Wl,--no-undefined -Wl,--exclude-libs=libunwind_llvm.a -Wl,--exclude-libs=libc++_static.a -Wl
,--exclude-libs=libvpx_assembly_arm.a --target=aarch64-linux-ohos -Wl,--hash-style=gnu -march=armv8-a -Werror -Wl,--warn-shared-textrel -Wl,-
O2 -Wl,--gc-sections -Wl,--gdb-index --sysroot=obj/third_party/musl -nostdlib -Lobj/third_party/musl/usr/lib/aarch64-linux-ohos -L../../prebu
ilts/clang/ohos/linux-x86_64/llvm/lib/clang/12.0.1/lib/aarch64-linux-ohos -L../../prebuilts/clang/ohos/linux-x86_64/llvm/lib/aarch64-linux-oh
os/c++ -Wl,--warn-shared-textrel -Bdynamic -Wl,-z,nocopyreloc -pie -o "./exe.unstripped/startup/init/init" obj/third_party/musl/usr/lib/aarch
64-linux-ohos/Scrt1.o obj/third_party/musl/usr/lib/aarch64-linux-ohos/crti.o -Wl,--start-group @"startup/init/init.rsp" -lc++ ../../prebuil
ts/clang/ohos/linux-x86_64/llvm/lib/clang/12.0.1/lib/aarch64-linux-ohos/libclang_rt.builtins.a -lc -lc++abi -ldl -lm -Wl,--end-group obj/thi
rd_party/musl/usr/lib/aarch64-linux-ohos/crtn.o -Wl,-verbose -v
clang version 16.0.0
Target: aarch64-unknown-linux-ohos
Thread model: posix
InstalledDir: /home/sam/src/openharmony/out/qemu-arm-linux/../../prebuilts/clang/ohos/linux-x86_64/llvm/bin
"/home/sam/src/openharmony/out/qemu-arm-linux/../../prebuilts/clang/ohos/linux-x86_64/llvm/bin/ld.lld" --sysroot=obj/third_party/musl -pie -
export-dynamic -EL -z relro --hash-style=gnu --eh-frame-hdr -m aarch64linux -export-dynamic -dynamic-linker /lib/ld-linux-aarch64.so.1 -o ./e
xe.unstripped/startup/init/init -L../../prebuilts/clang/ohos/linux-x86_64/llvm/lib/aarch64-linux-ohos/c++ -Lobj/third_party/musl/usr/lib/aarc
h64-linux-ohos -L../../prebuilts/clang/ohos/linux-x86_64/llvm/lib/clang/12.0.1/lib/aarch64-linux-ohos -L../../prebuilts/clang/ohos/linux-x86_
64/llvm/lib/aarch64-linux-ohos/c++ -Lobj/third_party/musl/usr/lib --version-script=gen/base/startup/init/interfaces/innerkits/init_module_eng
ine/libinit_stub_versionscript.map.txt --pack-dyn-relocs=android+relr --fatal-warnings --build-id=md5 -z noexecstack -z now -z relro -z defs
--as-needed -z max-page-size=4096 --icf=all --color-diagnostics --no-undefined --exclude-libs=libunwind_llvm.a --exclude-libs=libc++_static.a
--exclude-libs=libvpx_assembly_arm.a --hash-style=gnu --warn-shared-textrel -O2 --gc-sections --gdb-index --warn-shared-textrel -z nocopyrel
oc obj/third_party/musl/usr/lib/aarch64-linux-ohos/Scrt1.o obj/third_party/musl/usr/lib/aarch64-linux-ohos/crti.o --start-group obj/base/star
tup/init/services/init/adapter/init/init_adapter.o obj/base/startup/init/services/init/standard/init/device.o obj/base/startup/init/services/
init/standard/init/fd_holder_service.o obj/base/startup/init/services/init/standard/init/init.o obj/base/startup/init/services/init/standard/
init/init_cmdexecutor.o obj/base/startup/init/services/init/standard/init/init_cmds.o obj/base/startup/init/services/init/standard/init/init_
control_fd_service.o obj/base/startup/init/services/init/standard/init/init_jobs.o obj/base/startup/init/services/init/standard/init[75/1866]
nt.o obj/base/startup/init/services/init/standard/init/init_reboot.o obj/base/startup/init/services/init/standard/init/init_service.o obj/bas
e/startup/init/services/init/standard/init/init_signal_handler.o obj/base/startup/init/services/init/standard/init/switch_root.o obj/base/sta
rtup/init/interfaces/innerkits/hookmgr/init/hookmgr.o obj/base/startup/init/interfaces/innerkits/modulemgr/init/modulemgr.o obj/base/startup/
init/services/init/init/init_capability.o obj/base/startup/init/services/init/init/init_common_cmds.o obj/base/startup/init/services/init/ini
t/init_common_service.o obj/base/startup/init/services/init/init/init_config.o obj/base/startup/init/services/init/init/init_group_manager.o
obj/base/startup/init/services/init/init/init_service_file.o obj/base/startup/init/services/init/init/init_service_manager.o obj/base/startup
/init/services/init/init/init_service_socket.o obj/base/startup/init/services/init/init/main.o obj/base/startup/init/interfaces/innerkits/ini
t_module_engine/init_module_engine_sources/init_modulemgr.o obj/base/startup/init/services/modules/bootchart/libbootchart_static/bootchart_st
atic.o obj/base/startup/init/services/modules/bootevent/libbootevent_static/bootevent.o obj/base/startup/init/services/modules/init_hook/init
hook/init_hook.o obj/base/startup/init/services/modules/init_hook/inithook/param_hook.o obj/base/startup/init/services/modules/reboot/librebo
ot_static/reboot_misc.o obj/base/startup/init/services/modules/reboot/libreboot_static/reboot_static.o obj/base/startup/init/interfaces/inner
kits/control_fd/libcontrolfd.a obj/base/startup/init/interfaces/innerkits/fd_holder/libfdholder.a obj/base/startup/init/interfaces/innerkits/
fs_manager/libfsmanager_static.a obj/base/startup/init/interfaces/innerkits/sandbox/libsandbox.a obj/base/startup/init/services/loopevent/lib
loopevent.a obj/base/startup/init/services/param/linux/libparam_init.a obj/base/startup/init/services/utils/libinit_utils.a obj/base/customiz
ation/config_policy/frameworks/config_policy/libconfigpolicy_util_for_init_static.a obj/base/security/access_token/interfaces/innerkits/nativ
etoken/libnativetoken.a obj/base/security/access_token/interfaces/innerkits/token_setproc/libtoken_setproc.a obj/base/startup/init/ueventd/li
bueventd_ramdisk_static.a obj/third_party/bounds_checking_function/libsec_static.a obj/third_party/cJSON/libcjson_static.a obj/base/startup/i
nit/interfaces/innerkits/init_module_engine/libinit_module_engine.so obj/foundation/filemanagement/storage_service/services/storage_daemon/li
bfscrypt/libfscryptutils_static.a obj/base/startup/init/services/param/base/libparameterbase_ext.a hiviewdfx/hilog_native/libhilog.so obj/bas
e/startup/init/interfaces/innerkits/socket/libsocket.a obj/base/startup/init/services/log/libinit_log.a obj/third_party/musl/usr/lib/aarch64-
linux-ohos/libc.so obj/third_party/musl/usr/lib/aarch64-linux-ohos/libcrypt.a obj/third_party/musl/usr/lib/aarch64-linux-ohos/libdl.a obj/thi
rd_party/musl/usr/lib/aarch64-linux-ohos/libm.a obj/third_party/musl/usr/lib/aarch64-linux-ohos/libpthread.a obj/third_party/musl/usr/lib/aar
ch64-linux-ohos/libresolv.a obj/third_party/musl/usr/lib/aarch64-linux-ohos/librt.a obj/third_party/musl/usr/lib/aarch64-linux-ohos/libutil.a
obj/third_party/musl/usr/lib/aarch64-linux-ohos/libxnet.a -lc++ ../../prebuilts/clang/ohos/linux-x86_64/llvm/lib/clang/12.0.1/lib/aarch64-li
nux-ohos/libclang_rt.builtins.a -lc -lc++abi -ldl -lm --end-group obj/third_party/musl/usr/lib/aarch64-linux-ohos/crtn.o -verbose
ld.lld: gen/base/startup/init/interfaces/innerkits/init_module_engine/libinit_stub_versionscript.map.txt [49/1866]
ld.lld: obj/third_party/musl/usr/lib/aarch64-linux-ohos/Scrt1.o
ld.lld: obj/third_party/musl/usr/lib/aarch64-linux-ohos/crti.o
ld.lld: obj/base/startup/init/services/init/adapter/init/init_adapter.o
ld.lld: obj/base/startup/init/services/init/standard/init/device.o
ld.lld: obj/base/startup/init/services/init/standard/init/fd_holder_service.o
ld.lld: obj/base/startup/init/services/init/standard/init/init.o
ld.lld: obj/base/startup/init/services/init/standard/init/init_cmdexecutor.o
ld.lld: obj/base/startup/init/services/init/standard/init/init_cmds.o
ld.lld: obj/base/startup/init/services/init/standard/init/init_control_fd_service.o
ld.lld: obj/base/startup/init/services/init/standard/init/init_jobs.o
ld.lld: obj/base/startup/init/services/init/standard/init/init_mount.o
ld.lld: obj/base/startup/init/services/init/standard/init/init_reboot.o
ld.lld: obj/base/startup/init/services/init/standard/init/init_service.o
ld.lld: obj/base/startup/init/services/init/standard/init/init_signal_handler.o
ld.lld: obj/base/startup/init/services/init/standard/init/switch_root.o
ld.lld: obj/base/startup/init/interfaces/innerkits/hookmgr/init/hookmgr.o
ld.lld: obj/base/startup/init/interfaces/innerkits/modulemgr/init/modulemgr.o
ld.lld: obj/base/startup/init/services/init/init/init_capability.o
ld.lld: obj/base/startup/init/services/init/init/init_common_cmds.o
ld.lld: obj/base/startup/init/services/init/init/init_common_service.o
ld.lld: obj/base/startup/init/services/init/init/init_config.o
ld.lld: obj/base/startup/init/services/init/init/init_group_manager.o
ld.lld: obj/base/startup/init/services/init/init/init_service_file.o
ld.lld: obj/base/startup/init/services/init/init/init_service_manager.o
ld.lld: obj/base/startup/init/services/init/init/init_service_socket.o
ld.lld: obj/base/startup/init/services/init/init/main.o
ld.lld: obj/base/startup/init/interfaces/innerkits/init_module_engine/init_module_engine_sources/init_modulemgr.o
ld.lld: obj/base/startup/init/services/modules/bootchart/libbootchart_static/bootchart_static.o
ld.lld: obj/base/startup/init/services/modules/bootevent/libbootevent_static/bootevent.o
ld.lld: obj/base/startup/init/services/modules/init_hook/inithook/init_hook.o
ld.lld: obj/base/startup/init/services/modules/init_hook/inithook/param_hook.o
ld.lld: obj/base/startup/init/services/modules/reboot/libreboot_static/reboot_misc.o
ld.lld: obj/base/startup/init/services/modules/reboot/libreboot_static/reboot_static.o
ld.lld: obj/base/startup/init/interfaces/innerkits/control_fd/libcontrolfd.a
ld.lld: obj/base/startup/init/interfaces/innerkits/fd_holder/libfdholder.a
ld.lld: obj/base/startup/init/interfaces/innerkits/fs_manager/libfsmanager_static.a
ld.lld: obj/base/startup/init/interfaces/innerkits/sandbox/libsandbox.a
ld.lld: obj/base/startup/init/services/loopevent/libloopevent.a
ld.lld: obj/base/startup/init/services/param/linux/libparam_init.a
ld.lld: obj/base/startup/init/services/utils/libinit_utils.a
ld.lld: obj/base/customization/config_policy/frameworks/config_policy/libconfigpolicy_util_for_init_static.a
ld.lld: obj/base/security/access_token/interfaces/innerkits/nativetoken/libnativetoken.a
ld.lld: obj/base/security/access_token/interfaces/innerkits/token_setproc/libtoken_setproc.a
ld.lld: obj/base/startup/init/ueventd/libueventd_ramdisk_static.a
ld.lld: obj/third_party/bounds_checking_function/libsec_static.a
ld.lld: obj/third_party/cJSON/libcjson_static.a
ld.lld: obj/base/startup/init/interfaces/innerkits/init_module_engine/libinit_module_engine.so
ld.lld: obj/foundation/filemanagement/storage_service/services/storage_daemon/libfscrypt/libfscryptutils_static.a
ld.lld: obj/base/startup/init/services/param/base/libparameterbase_ext.a
ld.lld: hiviewdfx/hilog_native/libhilog.so
ld.lld: obj/base/startup/init/interfaces/innerkits/socket/libsocket.a
ld.lld: obj/base/startup/init/services/log/libinit_log.a
ld.lld: obj/third_party/musl/usr/lib/aarch64-linux-ohos/libc.so
ld.lld: obj/third_party/musl/usr/lib/aarch64-linux-ohos/libcrypt.a
ld.lld: obj/third_party/musl/usr/lib/aarch64-linux-ohos/libdl.a
ld.lld: obj/third_party/musl/usr/lib/aarch64-linux-ohos/libm.a
ld.lld: obj/third_party/musl/usr/lib/aarch64-linux-ohos/libpthread.a
ld.lld: obj/third_party/musl/usr/lib/aarch64-linux-ohos/libresolv.a
ld.lld: obj/third_party/musl/usr/lib/aarch64-linux-ohos/librt.a
ld.lld: obj/third_party/musl/usr/lib/aarch64-linux-ohos/libutil.a
ld.lld: obj/third_party/musl/usr/lib/aarch64-linux-ohos/libxnet.a
ld.lld: ../../prebuilts/clang/ohos/linux-x86_64/llvm/lib/aarch64-linux-ohos/c++/libc++.so
ld.lld: ../../prebuilts/clang/ohos/linux-x86_64/llvm/lib/aarch64-linux-ohos/c++/libc++.so.1
ld.lld: ../../prebuilts/clang/ohos/linux-x86_64/llvm/lib/aarch64-linux-ohos/c++/libc++abi.so
ld.lld: ../../prebuilts/clang/ohos/linux-x86_64/llvm/lib/clang/12.0.1/lib/aarch64-linux-ohos/libclang_rt.builtins.a
ld.lld: obj/third_party/musl/usr/lib/aarch64-linux-ohos/libc.so
ld.lld: ../../prebuilts/clang/ohos/linux-x86_64/llvm/lib/aarch64-linux-ohos/c++/libc++abi.so
ld.lld: obj/third_party/musl/usr/lib/aarch64-linux-ohos/libdl.a
ld.lld: obj/third_party/musl/usr/lib/aarch64-linux-ohos/libm.a
ld.lld: obj/third_party/musl/usr/lib/aarch64-linux-ohos/crtn.o
ld.lld: error: version script assignment of 'LIBINIT_STUB_VERSIONSCRIPT' to symbol 'SystemReadParam' failed: symbol not defined
ld.lld: error: version script assignment of 'LIBINIT_STUB_VERSIONSCRIPT' to symbol 'InitAddGlobalInitHook' failed: symbol not defined
ld.lld: error: version script assignment of 'LIBINIT_STUB_VERSIONSCRIPT' to symbol 'InitAddPreParamServiceHook' failed: symbol not defined
ld.lld: error: version script assignment of 'LIBINIT_STUB_VERSIONSCRIPT' to symbol 'InitAddPreParamLoadHook' failed: symbol not defined
ld.lld: error: version script assignment of 'LIBINIT_STUB_VERSIONSCRIPT' to symbol 'InitAddPreCfgLoadHook' failed: symbol not defined
ld.lld: error: version script assignment of 'LIBINIT_STUB_VERSIONSCRIPT' to symbol 'InitAddPostCfgLoadHook' failed: symbol not defined
clang-16: error: linker command failed with exit code 1 (use -v to see invocation)
检查libinit_module_engine.so的符号表,的确是包含这几个符号的
sam@builder:~/src/openharmony/out/qemu-arm-linux$ nm -gD obj/base/startup/init/interfaces/innerkits/init_module_engine/libinit_module[1/1896]
so
000000000000190c T AddCmdExecutor
000000000000190c T AddRebootCmdExecutor
0000000000003c68 B __bss_start
w __cxa_finalize
w __deregister_frame_info
000000000000190c T DoJobNow
0000000000003c68 D _edata
0000000000003cb1 B _end
0000000000001a04 T _fini
000000000000190c T GetBootStageHookMgr
000000000000190c T GetServiceExtData
000000000000190c T HookMgrAdd
00000000000019f4 T _init
000000000000190c T InitAddGlobalInitHook
000000000000190c T InitAddPostCfgLoadHook
000000000000190c T InitAddPreCfgLoadHook
000000000000190c T InitAddPreParamLoadHook
000000000000190c T InitAddPreParamServiceHook
000000000000190c T InitModuleMgrInstall
000000000000190c T InitModuleMgrUnInstall
000000000000190c T LoadParamsFile
w __register_frame_info
000000000000190c T RemoveCmdExecutor
000000000000190c T SplitString
000000000000190c T StartupLog
000000000000190c T SystemReadParam
000000000000190c T SystemWriteParam
000000000000190c T UpdateMiscMessage
4、结论
的确是clang 16.0.0的原因,lld修改了一个关于version script的选项的默认值,如果引用的符号没有定义会发出一个warning,而工具链默认是开启了-Werror的,会把所有的warning转换成error。
其实,nm检查clang 12.0.1成功编译的init可执行程序的符号表,也找不到Init前缀的这些,但是SystemReadParam是有的。
更多推荐

所有评论(0)