Создайте статическую библиотеку и создайте ссылку на нее - PullRequest
0 голосов
/ 15 февраля 2019

Здравствуйте, красивые люди,

Я пытаюсь создать статическую библиотеку и скомпилировать ее.Я уже создал небольшой статический библиотека и заголовок для него.

Заголовок (math.h):

int add (int a, int b);
int sub (int a, int b);

add.c:

int add (int a, int b) { return a + b; }

sub.c:

int sub (int a, int b) { return a - b; }

Я создал свой статический библиотека с помощью следующих команд:

gcc -c add.c

gcc -c sub.c

ar rcs libmymath.a add.o sub.o

Теперь мой main.c

#include <stdio.h>
#include "math.h"

int main( int argc, char **argv ) {
    printf("Result : %d\n", add(5,7) );
    return 0;
}

Я могускомпилируйте его с помощью следующей команды:

gcc main.c libmymath.a -o main

Но если я скомпилирую его следующим образом, произойдет сбой.

gcc main.c -lmymath -L. -o main

Произойдет сбой со следующей ошибкой:

/usr/bin/ld: cannot find -lmymath collect2:

error: ld returned 1 exit status

даже изменение

gcc main.c -llibmymath -L. -o main

не удается, и даже если я включу заголовок mymath.h в gcc. Можете ли вы мне помочь?

1 Ответ

0 голосов
/ 15 февраля 2019

gcc уже понял -lmymath с помощью libmath.so или libmath.a.Поэтому, когда вы добавляете слово lib в -llibmymath.В этом случае gcc понимает, что ваша библиотека называется liblibmymath.a.Поэтому, пожалуйста, замените эту команду

gcc main.c -llibmymath -L. -o main

на

gcc main.c  -o main -L. -lmymath 

Она должна работать.

...