protoc-gen-javastream: protoc-gen _ZN6google8protobuf20FieldDescriptorProto17default_instance_E

android10 编译报错_ZN6google8protobuf20FieldDescriptorProto17default_instance_E

glibc 版本切换,libm
正常上电的一般会有:

或者有 power up 1.8,也可能开机的时候抓不到
这张图来看,sim卡接到ATR数据不对

查看 glibc版本: ldd --version
ls -l /lib/x86_64-linux-gnu/libc.so.6

sudo update-alternatives --install /usr/include/openssl openssl-include /usr/local/openssl1.0.2g/include/openssl 300
openssl-include

android build reference to ‘__libc_csu_fini’
报错,google搜索

Fix kernel build with glibc 2.34

In glibc 2.34 was removed reference to ‘__libc_csu_fini’ and ‘__libc_csu_init’. Building ended with this error.

/work/2/Lineage17.1/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8/bin/…/sysroot/usr/lib/crt1.o(.text+0x12): error: undefined reference to ‘__libc_csu_fini’
/work/2/Lineage17.1/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8/bin/…/sysroot/usr/lib/crt1.o(.text+0x19): error: undefined reference to ‘__libc_csu_init’
collect2: error: ld returned 1 exit status
https://review.lineageos.org/c/LineageOS/android_vendor_lineage/+/318916

device/qcom/kernelscripts/kernel_definitions.mk
排查过程:1. 去掉-L/usr/lib/x86_64-linux-gnu 之后不报错,主要是glibc版本问题,
在x86_64架构下, 在 /usr/lib/x86_64-linux-gnu 文件夹下默认存放的是Gnu C/C++ 编译器的系统库。
里边的文件很重要,在不知道确切用途的情况下不要移动或删除该文件夹下的库文件。

可以通过命令ls /usr/lib/x86_64-linux-gnu -l 查看文件夹下的文件。

扩展资料
在Ubuntu系统安装好GNU编译器后自动生成/usr/lib/x86_64-linux-gnu文件夹。有时候安装其它软件时,产生的动态库也可能出现在该文件夹下。如何引用动态库。
可以在环境变量加入LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/lib.
或者在编译的时候制定 -L/usr/lib/x86_64-linux-gnu -l

或者在/etc/ld.so.conf.d文件中加入/usr/lib/x86_64-linux-gnu/,然后运行命令ldconf

报错的地方:prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8/sysroot/usr/lib/crt1.o:undefined reference to ‘__libc_csu_fini’
链接的是项目自带的环境,但是动态库版本是电脑系统的环境
解决方法:/usr/lib/x86_64-linux-gnu/crt1.o 替换项目的 crt1.o 链接的环境为电脑的系统环境
.o 文件说明:
1、.o文件是源码编译出的二进制文件, 静态库文件
2、.a文件实质上就是*.o文件打了个包。一般把它叫做静态库文件
3、.so文件不仅是.o*文件打了一个包,它是一个ELF格式的文件,即linux的可执行文件

gcc -c 1.c 进行编译生成1.o文件,然后通过
objdump -h 1.o 可以查看该目标文件的信息

.o文件就是对象文件,是可重定向文件的一种,通常以ELF格式保存,里面包含了对各个函数的入口标记,描述,当程序要执行时还需要链接(link).链接就是把多个.o文件链成一个可执行文件。
在win平台下,用来链接的重定向文件也可为PE格式的.obj文件
当多种编程语言希望混合编译时,就可以通过分别编译成.o文件,再链接(link)成可执行文件。

sudo apt install g+±9
sudo apt install g+±8

ubuntu22编译 android10代码:abl.ef edk2报错
改成 openssl 1.0, openssl-include 3.0 编译ok,如果还是有该报错,cd bootable/bootloader/edk2/BaseTools make clean,
重新编译
整个项目不需要make clean, 重新继续编译即可。
由于最开始使用make -C Basetools产生的中间文件没有被清理掉

{
FAILED: out/target/product/qssi/vbmeta_system.img
/bin/bash -c “out/host/linux-x86/bin/avbtool make_vbmeta_image --algorithm SHA256_RSA2048 --key external/avb/test/data/testkey_rsa2048.pem --padding_size 4096 --rollback_index 1596585600 --include_descriptors_from_image out/target/product/qssi/system.img --include_descriptors_from_image out/target/product/qssi/product.img --output out/target/product/qssi/vbmeta_system.img”
/home/lian/android/codes/SM6350_Android10_R01_r379/out/host/linux-x86/bin/avbtool: Error getting public key: openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
} 主要是ldconfig 中配置openssl的lib so库路径

使用openssl 1.0.2g报错:主要是 openssl include(usr/include/openssl 版本太低,跟系统不匹配 sys:3.0)
该处换成3.0不报错,openssl也使用3.0的话 abl.ef报错: {
FAILED: out/target/product/lito/abl.elf
/media/lian/a49ee8ae-6be0-4818-8577-d8c7b089597e/home/q/android/SM6350_Android10_R01_r379/prebuilts/build-tools/linux-x86/bin/make -C Common
make[3]: Entering directory ‘/media/lian/a49ee8ae-6be0-4818-8577-d8c7b089597e/home/q/android/SM6350_Android10_R01_r379/bootable/bootloader/edk2/BaseTools/Source/C/Common’
make[3]: *** No rule to make target ‘/home/q/android/SM6350_Android10_R01_r379/prebuilts/clang/host/linux-x86/clang-r353983c1/lib64/clang/9.0.3/include/stdint.h’, needed by ‘BasePeCoff.o’. Stop.
make[3]: Leaving directory ‘/media/lian/a49ee8ae-6be0-4818-8577-d8c7b089597e/home/q/android/SM6350_Android10_R01_r379/bootable/bootloader/edk2/BaseTools/Source/C/Common’
make[2]: *** [GNUmakefile:79: Common] Error 2
make[2]: Leaving directory ‘/media/lian/a49ee8ae-6be0-4818-8577-d8c7b089597e/home/q/android/SM6350_Android10_R01_r379/bootable/bootloader/edk2/BaseTools/Source/C’
make[1]: *** [GNUmakefile:25: Source/C] Error 2
make[1]: Leaving directory ‘/media/lian/a49ee8ae-6be0-4818-8577-d8c7b089597e/home/q/android/SM6350_Android10_R01_r379/bootable/bootloader/edk2/BaseTools’
make: *** [makefile:138: EDK_TOOLS_BIN] Error 2
make: Leaving directory ‘/media/lian/a49ee8ae-6be0-4818-8577-d8c7b089597e/home/q/android/SM6350_Android10_R01_r379/bootable/bootloader/edk2’
16:02:27 Disallowed PATH tool “make” used: []string{“make”, “-f”, “/media/lian/a49ee8ae-6be0-4818-8577-d8c7b089597e/home/q/android/SM6350_Android10_R01_r379/kernel/msm-4.19/scripts/Makefile.build”, “obj=scripts/basic”
}

In file included from /usr/include/openssl/opensslv.h:109:0,
from /media/lian/a49ee8ae-6be0-4818-8577-d8c7b089597e/home/q/android/SM6350_Android10_R01_r379/kernel/msm-4.19/scripts/sign-file.c:25:
/usr/include/openssl/macros.h:155:4: error: #error “OPENSSL_API_COMPAT expresses an impossible API compatibility level”
error “OPENSSL_API_COMPAT expresses an impossible API compatibility level”

HOSTCC scripts/mod/modpost.o
HOSTCC scripts/mod/file2alias.o
In file included from /usr/include/openssl/bio.h:18:0,
from /media/lian/a49ee8ae-6be0-4818-8577-d8c7b089597e/home/q/android/SM6350_Android10_R01_r379/kernel/msm-4.19/scripts/extract-cert.c:21:
/usr/include/openssl/macros.h:155:4: error: #error “OPENSSL_API_COMPAT expresses an impossible API compatibility level”
error “OPENSSL_API_COMPAT expresses an impossible API compatibility level”
HOSTCC scripts/mod/sumversion.o
make[3]: *** [scripts/Makefile.host:90: scripts/extract-cert] Error 1
make[3]: *** Waiting for unfinished jobs…
make[3]: *** [scripts/Makefile.host:90: scripts/sign-file] Error 1
HOSTLD scripts/genksyms/genksyms
HOSTLD scripts/mod/modpost
make[2]: *** [/media/lian/a49ee8ae-6be0-4818-8577-d8c7b089597e/home/q/android/SM6350_Android10_R01_r379/kernel/msm-4.19/Makefile:1151: scripts] Error 2
make[2]: *** Waiting for unfinished jobs…
CALL /media/lian/a49ee8ae-6be0-4818-8577-d8c7b089597e/home/q/android/SM6350_Android10_R01_r379/kernel/msm-4.19/scripts/checksyscalls.sh
make[1]: *** [Makefile:146: sub-make] Error 2
make: *** [Makefile:24: __sub-make] Error 2
13:20:41 ninja failed with: exit status 1

gcc 11 报错:
FAILED: ninja: out/soong/build.ninja:2181777: bad $-escape (literal $ must be written as $$
rm out/soong/build.ninja

out/host/linux-x86/bin/protoc-gen-javastream: symbol lookup error: out/host/linux-x86/bin/protoc-gen-javastream: undefined symbol: _ZN6google8protobuf20FieldDescriptorProto17default_instance_E

./prebuilts/tools/linux-x86_64/protoc/bin/protoc --version
2.5.0
protoc --verison
3.12.4
需要卸载:sudo apt autoremove protobuf-compiler

=手动执行以下命令:=======
/bin/bash -c “(rm -rf out/target/common/obj/JAVA_LIBRARIES/am_intermediates/proto/src ) && (mkdir -p out/target/common/obj/JAVA_LIBRARIES/am_intermediates/proto/src ) && (for f in frameworks/base/cmds/am/proto/instrumentation_data.proto; do out/host/linux-x86/bin/aprotoc --proto_path=. --javastream_out=”:out/target/common/obj/JAVA_LIBRARIES/am_intermediates/proto/src" --plugin=out/host/linux-x86/bin/protoc-gen-javastream $f || exit 33; done ) && (touch out/target/common/obj/JAVA_LIBRARIES/am_intermediates/proto/Proto.stamp )"
或者:out/host/linux-x86/bin/protoc-gen-javastream
也会报上面的错误。
查找可执行文件的依赖库:ldd命令找到protoc库位置,
ldd out/host/linux-x86/bin/protoc-gen-javastream
在这里插入图片描述

修改 /usr/local/MATLAB/MATLAB_Runtime/v912/bin/glnxa64/libprotobuf3.so.3.11.4.0 --> libsprotobuf3.so.3.11.4.0
修改完之后的依赖库:

修改完编译成功。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值