Я использую TrueStudio для моего собственного проекта stm32.Я создаю 2 файла foo.h и foo.c включает в себя 2 функции
//foo.h
int add(int a, int b);
int sub(int a, int b);
и реализацию timeout
//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.а.Я продолжаю делать основной файл для реализации библиотеки для тестирования.
//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 с main.c, чтобы сделать исполняемый файл с помощью команды
gcc main.c foo.a -o main
Я запустил его и получил результат
sum is: 150
sub is: 50
Это сработало, докажите, что моя статическая библиотека была успешно построена.Я начинаю создавать проект stm32 из stmcubeMX и компоновщика для этого 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 */
}
}
Я очень благодарен за любую помощь, спасибо!