【问题标题】:Adding my own library to Contiki OS将我自己的库添加到 Contiki OS
【发布时间】:2015-04-30 15:25:29
【问题描述】:

我想向 Contiki 添加一些第三方库,但目前我不能。 所以我只想用一个简单的库进行测试。

我写了两个文件hello.c hello.h,在hello.c我有:

printf(" Hello everbody, library call\n");

在 hello.h 我有:

extern void print_hello();

我使用以下命令创建了 hello.o:

msp430-gcc -mmcu=msp430f1611 hello.c -o hello.o

我创建了一个存档文件:

ar -cvq libhello.a hello.o

我搬到了 contiki,我编写了一个简单的程序,它调用 hello.h 来执行一个函数。我尝试在 makefile 中使用 PROJECT LIBRARIES 变量包含 hello.a,当我编译时我得到了这个:

  Hello_lib.sky section .vectors' will not fit in region'vectors'
  ...
  region vectors overflowed by 32 Bytes

谁能解释一下问题出在哪里(我是该领域的新手)?

如果可能的话,如何纠正它? (我应该为 msp430-gcc 指定哪些选项) 谢谢。

【问题讨论】:

  • 您要为哪种架构编译?智能手机还是msp430f2131? Wismote 使用 Series 5 MSP430,而 MSP430F2131 来自 Series 2:一个完全不同的系列。
  • 我的目标不是可部署代码,只是想进行模拟。所以假设我想使用 Skymote (msp430f1611),谢谢你的评论

标签: c cpu-architecture msp430 contiki


【解决方案1】:

确保为构建程序的相同架构构建库。

例如,如果您想使用为sky motes (MSP430F1611 MCU) 构建可执行文件,请使用以下命令构建库:

msp430-gcc -mmcu=msp430f1611 -c hello.c -o hello.o
msp430-ar -cvq libhello.a hello.o

然后将库的路径及其名称添加到应用程序的 Makefile:

TARGET_LIBFILES += -L./hellolib -lhello

然后像往常一样构建应用程序:

make TARGET=sky

【讨论】:

  • 非常感谢。我太盲目了,我没有注意到 msp430-ar 而不是 ar 命令。再次感谢您,先生。
【解决方案2】:

此视频展示了如何将您自己的库添加到 Contiki OS

https://www.youtube.com/watch?v=csa9D1U5R_8

详情:

  • 我创建的库是:libhello.a
  • 库只打印消息“Hello everbody,库调用”
  • 我将该库包含在 Contiki 示例“example-broadcast.c”中

视频步骤:

  1. 创建文件夹示例:

    • 复制example-broadcast.c

    • 复制 Makefile

  2. 创建库:

    • 创建目标文件:

      msp430-gcc -mmcu=msp430f1611 -c hello.c -o hello.o
      
    • 创建库文件:

      msp430-ar -cvq libhello.a hello.o
      
  3. 告诉 Contiki 图书馆的路径:

        TARGET_LIBFILES += -L. -lhello
    
  4. 将库添加到您的 .c 代码并打印 hello 消息:

     #include "hello.h"
     Print_Function();
    
  5. 编译你的 .c 代码:

     make example-broadcast TARGET=sky
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多