我在文件 cpstr.c 中定义了一个内联函数 copy_string 并为 cpstr.c 文件创建了 .so 文件 (libtest.so)。在尝试将这个 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
copy_string
当我们试图获取 libtest.so 的内容时,我在 libtest.so 文件中找不到名称。copy_string
但是当我从function 中删除 'inline' 时,我可以在内容中看到它。
谁能建议我一个解决方案来摆脱未定义的符号错误而不删除内联函数。
测试.c
#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