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程序,成功。

  • 相关阅读:
    hdu 1443 Joseph 约瑟夫环
    hdu 1568 Fibonacci 对数。。
    UILineBreakMode
    Android RelativeLayout 动态添加组件
    iOS 让view触发点击事件
    读取plist文件数据
    [转]Android获取SD卡视频音频文件
    ubuntu下vim修复
    DMO(DirectX Media Object)的工程创建过程及其调用方式
    《Windows程序设计》笔记 —— Chapter One
  • 原文地址:https://www.cnblogs.com/emlslxl/p/5611400.html
Copyright © 2011-2022 走看看