zoukankan      html  css  js  c++  java
  • 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程序,成功。

  • 相关阅读:
    无聊的时候,冷死了(三)
    素数测试算法(基于Miller-Rabin的MC算法) // Fermat素数测试法
    英语笔记
    大数乘法
    jsp的session完成登陆功能
    java中如何制定自定义异常
    jsp获取请求头信息
    JSP的taglib示例
    JSP的自定义标签
    java中路径中参数值是中文,打印到页面是乱码的解决方案
  • 原文地址:https://www.cnblogs.com/emlslxl/p/5611400.html
Copyright © 2011-2022 走看看