我将 TrueStudio 用于我自己的 stm32 项目。我创建了 2 个文件 foo.h 和 foo.c 包含 2 个函数
//foo.h
int add(int a, int b);
int sub(int a, int b);
以及超时的实现
//foo.c
#include "foo.h"
int add(int a, int b)
{
return a + b;
}
int sub(int a, int b)
{
return a - b;
}
之后,我使用 gcc 编译了一个静态库 foo.a。我继续制作主文件来实现库来测试。
//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;
}
接下来,我将静态 foo lib 链接到 main.c 以使用以下命令生成可执行文件
gcc main.c foo.a -o main
我运行它并得到结果是
sum is: 150
sub is: 50
效果很好,证明我的静态库已成功构建。我开始从 stmcubeMX 和链接器创建一个项目 stm32 到这个 foo.a 并出现错误。
undefined reference to 'add'
undefined reference to 'sub'
我的完整代码和设置路径并在下面构建
//main.c in TrueStudio
#include "main.h"
#include "foo.h"
int main(void)
{
HAL_Init();
SystemClock_Config();
int a = 200, b = 100;
int _sum, _sub;
_sum = add(a, b);
_sub = sub(a, b);
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
}
我非常感谢任何帮助,谢谢!