при компиляции кода с использованием g cc на ma c OS компоновщик не смог связать пользовательскую библиотеку stati c - PullRequest
0 голосов
/ 16 февраля 2020

вот структура файла моего проекта в c -языке:
первая - это папка fullCourse
папка fullCourse содержит три папки:
1. include
2. sr c
3. lib
4. test
в папке include:
содержит заголовочный файл: temp.h

код для temp.h выглядит следующим образом:

#ifndef __$__temp_h
#define __$__temp_h 234
int yash();
#endif

в папке sr c:
Содержит исходный файл: temp. c

код для температуры. cc выглядит следующим образом:

#ifndef __$__temp_c
#define __$__temp_c 234
int yash()
{
return 22;
}
#endif

Затем, оставаясь в той же папке, создали файл .o следующим образом:

gcc -I ../include -c temp.c

Следующим шагом было перемещение этого файла temp.o в папку lib следующим образом:

mv temp.o ../lib

чем, оставаясь в папке lib, создал архивный (или библиотечный) файл следующим образом:

ar rcs libtmds.a temp.o

чем в папке test написал исходный код для библиотеки тестирования (tempTest. c)
код для tempTest. c выглядит следующим образом:

#include<stdio.h>
#include<temp.h>
int main()
{
int w;
w=yash();
printf("%d\n",w);
return 0;
}

, чем пребывание в тестовой папке пыталось скомпилировать его следующим образом:

gcc -static -I ../include tempTest.c -L ../lib -ltmds -o tempTest.exe

, но код не сделал скомпилировано, ш из-за следующей ошибки:

ld: library not found for -lcrt0.o
clang: error: linker command failed with exit code 1 (use -v to see invocation)

, пожалуйста, помогите мне решить эту проблему.

1 Ответ

0 голосов
/ 17 февраля 2020

-static здесь ошибочно. Для ссылки на ваш файл c lib просто укажите ссылку на него без какого-либо флага -static, который предназначен для компиляции ядра.

...