• yocto 编译C程序


    1. 找到编译器位置所在(相关设置参考/opt/poky/1.7/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi文件)

      poky安装在/opt目录下,编译器目录:/opt/poky/1.7/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueab/

    2. 将编译器目录添加如环境变量

      vi ~/.bashrc

      在最后加入

      PATH=$PATH:/opt/poky/1.7/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi

      export PATH

      使路径生效

      sourec ~/.bashrc

    3. 编写Makefile

      编写hello world程序。

      编写Makefile

      1 CC=arm-poky-linux-gnueabi-gcc   -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9
      2 CFLAGS= -O2 -pipe -g -feliminate-unused-debug-types
      3 LDFLAGS=-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed
      4 EXEC = hello
      5 OBJS = hello.o
      6 
      7 all:$(EXEC)
      8 
      9 $(EXEC):$(OBJS)
     10     $(CC) $(LDFLAGS) -o $@ $(OBJS)
     11 
     12 clean:
     13     rm -f $(EXEC) *.elf *.gdb *.o

    4. 出现问题

      开发板上执行生成的hello可执行程序提示: -sh: ./hello: not found

      使用arm-linux-gnueabihf-readelf -d hello 命令查看动态链接库情况,显示只使用了 libc.so.6 这个动态库

      查看开发板根文件系/lib文件夹,发现有动态库存在。

      网上说可能是 2个动态库 版本相差太多造成的,所以需要静态编译(在编译选项中加入-static即可)hello程序。

      开发板上再次执行hello程序,成功。

  • 相关阅读:
    Git忽略规则.gitignore梳理
    makefile 系统脚本分析
    Kipmi0 占用CPU 100%
    kubectl检查组件健康状态异常处理
    Java 数组如何转成List集合
    用户控件中多控件自定义单击事件
    DevExpress启动窗体SplashScreen
    使用C#获取统计局行政区划代码
    解决mysqlclient模块安装问题
    com.aspose.words 类LoadOptions
  • 原文地址:https://www.cnblogs.com/emlslxl/p/5611400.html
Copyright © 2020-2023  润新知