我将TrueStudio用于自己的stm32项目。我创建了2个文件foo.h和foo.c包含2个函数
// .eslintrc.js
const path = require('path')
module.exports = {
env: {
browser: true,
es6: true,
jest: true
},
extends: [
'airbnb-base',
'plugin:vue/recommended',
'plugin:vue-types/strongly-recommended',
'plugin:prettier/recommended',
'@vue/prettier'
],
globals: {
Atomics: 'readonly',
SharedArrayBuffer: 'readonly'
},
parserOptions: {
ecmaVersion: 2018,
sourceType: 'module'
},
plugins: ['prettier', 'vue'],
rules: {
'prettier/prettier': 'error',
'no-console': 0,
'import/prefer-default-export': 0,
'import/no-unresolved': 0,
'vue/max-attributes-per-line': 0
}
}
和超时的实现
//foo.h
int add(int a, int b);
int sub(int a, int b);
之后,我用gcc编译了一个静态库foo.a。我继续制作主文件以实施要测试的库。
//foo.c
#include "foo.h"
int add(int a, int b)
{
return a + b;
}
int sub(int a, int b)
{
return a - b;
}
接下来,我将静态foo lib链接到main.c以使用命令is创建一个可执行文件
//main.c
#include <stdio.h>
#include "foo.h"
int main(int argc, const char *argv[])
{
int a = 100, b = 50;
printf("sum is: %d\n", add(a,b));
printf("sub is: %d\n", sub(a,b));
return 0;
}
我运行它并得到结果
gcc main.c foo.a -o main
这很好,证明了我的静态库已成功构建。 我开始从stmcubeMX和此foo.a的链接器创建项目stm32,并出现错误。
sum is: 150
sub is: 50
我的完整代码和设置路径并建立波纹管
undefined reference to 'add'
undefined reference to 'sub'
非常感谢您的帮助!
答案 0 :(得分:0)
将foo.a
文件重命名为libfoo.a
,然后将C Linker-> Libraries-> Libraries更改为foo
,前面或后面都没有任何内容。这应该导致最终输出为-lfoo
,这反过来又使链接程序在库搜索路径中搜索libfoo.a
。