android-ndk 源码编译

$ mkdir llvm-toolchain && cd llvm-toolchain
$ repo init -u https://android.googlesource.com/platform/manifest -b llvm-toolchain
$ repo sync -c

初始化仓库,可以使用镜像提速。

$ python toolchain/llvm_android/build.py --lto --bolt --pgo --no-build windows

过程中会遇到各种库缺失的问题,安装对应的库后继续

这时,会出现一系列的异常,比如xxx.so,xxx.lib,xxx.a找不到,由三方库输出目录lib/lib64难以区分导致,修改后可正常编译

diff --git a/base_builders.py b/base_builders.py
index 58589a2..fea6af9 100644
--- a/base_builders.py
+++ b/base_builders.py
@@ -49,6 +49,7 @@ class LibInfo:
 
     lib_version: str
     static_lib: bool = False
+    lib_dir : str = 'lib'
 
     @property
     def install_dir(self) -> Path:
@@ -79,7 +80,7 @@ class LibInfo:
     def link_libraries(self) -> List[Path]:
         """Path to the libraries used when linking."""
         suffix = self._lib_suffix
-        return list(self.install_dir / 'lib' / f'{name}{suffix}' for name in self._lib_names)
+        return list(self.install_dir / self.lib_dir / f'{name}{suffix}' for name in self._lib_names)
 
     @property
     def install_libraries(self) -> List[Path]:
diff --git a/builders.py b/builders.py
index cecd694..85a1a5c 100644
--- a/builders.py
+++ b/builders.py
@@ -702,6 +702,7 @@ class XzBuilder(base_builders.CMakeBuilder, base_builders.LibInfo):
     src_dir: Path = paths.XZ_SRC_DIR
     config_list: List[configs.Config] = [configs.host_config()]
     static_lib: bool = True
+    lib_dir: str = 'lib64'
 
     @property
     def cmake_defines(self) -> Dict[str, str]:
@@ -720,6 +721,7 @@ class LibXml2Builder(base_builders.CMakeBuilder, base_builders.LibInfo):
     src_dir: Path = paths.LIBXML2_SRC_DIR
     config_list: List[configs.Config] = [configs.host_config()]
     lib_version: str = '2.9.13'
+    lib_dir: str = 'lib64'
 
     @contextlib.contextmanager
     def _backup_file(self, file_to_backup: Path) -> Iterator[None]:
@@ -760,7 +762,7 @@ class LibXml2Builder(base_builders.CMakeBuilder, base_builders.LibInfo):
         if self._config.target_os.is_windows:
             return []
         ext = 'so' if self._config.target_os.is_linux else 'dylib'
-        return [self.install_dir / 'lib' / f'libxml2.{ext}']
+        return [self.install_dir / self.lib_dir / f'libxml2.{ext}']
 
 
 class LldbServerBuilder(base_builders.LLVMRuntimeBuilder):
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值