Я определил встроенную функцию copy_string в файле cpstr.c и создал файл .so (libtest.so) для файла cpstr.c. При попытке связать этот libtest.so с test.c я получаю сообщение об ошибке
ild: (undefined symbol) char*copy_string(char*,const char*) -- referenced in the text segment of test.o
Когда я удалил встроенную функцию из функции copy_string, она работает нормально.
Ниже приведены команды, которые мы пробовали,
CC -c -xarch=v9 test.c
CC -G -xarch=v9 -o libtest.so -Kpic cpstr.c
CC -xarch=v9 -g -o test test.o /myplace/libtest.so
Когда мы попытались получить содержимое libtest.so, я не смог найти имя copy_string
в файле libtest.so. Но я вижу это в содержании, когда я удалил «встроенный» из функции copy_string
.
Может ли кто-нибудь предложить мне решение, чтобы избавиться от ошибки неопределенного символа без удаления встроенной функции.
тест.с
#include <stdio.h>
extern char *copy_string (char *, const char*);
int main()
{
char str[50];
copy_string(str,"hello");
printf("%s\n", str);
return 0;
}
cpstr.c
#include<string.h>
inline char *copy_string (char *str1, const char *str2)
{
return (str2 ? strcpy (str1, str2) : (char *) 0);
}
CC -c -xarch=v9 test.c
CC -G -xarch=v9 -o libtest.so -Kpic cpstr.c
CC -xarch=v9 -g -o test test.o /space/systpe/devendra/dhsqlroot/libtest.so
ild: (undefined symbol) char*copy_string(char*,const char*) -- referenced in the text segment of test.o