鸿蒙程序编译

本文详细介绍了如何在AARCH64架构的Linux OHOS环境下,从源码编译简单的C程序到生成动态库的过程。涉及的编译命令包括使用clang++和clang,以及一系列编译选项,如-fdata-sections、-ffunction-sections等,确保程序正确链接和优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

示例

源码

  • 源码 add.c
    int add(int a, int b)
    {
       return a+b;
    }
    
  • 源码 main.c
    #include <stdio.h>
    
    extern int add(int a, int b);
    int main(int argc, char *argv[])
    {
          printf("test %d", add(1, 2));
          return 0;
    }
    

编译

  • 编译成 *.o 文件
    clang++.exe --target=aarch64-linux-ohos \
      --gcc-toolchain=D:/Huawei/SDK/native/2.0.1.93/llvm \
      --sysroot=D:/Huawei/SDK/native/2.0.1.93/sysroot  \
      -Dhello_EXPORTS  -g -fdata-sections -ffunction-sections \
      -funwind-tables -fstack-protector-strong -no-canonical-prefixes \
      -fno-addrsig -Wa,--noexecstack -Wformat -Werror=format-security  \
       -O0 -fno-limit-debug-info  -fPIC   -o add.o -c add.c
    
  • 编译成动态库
     clang.exe --target=aarch64-linux-ohos \
         --gcc-toolchain=D:/Huawei/SDK/native/2.0.1.93/llvm \
         --sysroot=D:/Huawei/SDK/native/2.0.1.93/sysroot \
         add.o -shared -fPIC \
         --rtlib=compiler-rt -fuse-ld=lld -Wl,--build-id=sha1 \
         -Wl,--warn-shared-textrel -Wl,--fatal-warnings -lunwind \
         -Wl,--no-undefined -Qunused-arguments -Wl,-z,noexecstack \
         -o libtest.so
    
  • 编译程序
    clang --target=aarch64-linux-ohos \
         --gcc-toolchain=D:/Huawei/SDK/native/2.0.1.93/llvm \
         --sysroot=D:/Huawei/SDK/native/2.0.1.93/sysroot \
         --rtlib=compiler-rt -fuse-ld=lld -Wl,--build-id=sha1 \
         -Wl,--warn-shared-textrel \
         -Wl,--fatal-warnings -lunwind -Wl,--no-undefined \
         -Qunused-arguments -Wl,-z,noexecstack \
         -L./ -ltest main.c -o main
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值