我想将这些文件编译成可执行文件。
//main.c
#include <stdio.h>
#include <mylib.h>
int main(void){
call_hello_world();
return 0;
}
//mylib.h
void call_hello_world(void);
//mylib.c
#include <mylib.h>
#include <stdio.h>
void call_hello_world( void ) {
printf( ”Hello world!” );
}
我试过了
gcc -c -I. -fPIC -o mylib.o mylib.c
gcc -shared -o libmylib.so mylib.o
gcc -c -o main.o main.c
gcc -o hello main.o -L. -lmylib
但是在第三步,我陷入了困境,因为它找不到我的“mylib.h”。我的教授说我需要更改“LD_LIBRARY_PATH”,因此我尝试添加此 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/dev/shm
我的 .zshrc 但它仍然对我不起作用。有什么建议我应该做什么吗?
最佳答案
这些是所需的命令:
gcc -c -I. -fPIC -o mylib.o mylib.c
gcc -shared -o libmylib.so mylib.o
gcc -c -I. -o main.o main.c
gcc -o hello main.o libmylib.so
然后在你的 shell 中:
导出 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/full/path/of/directory/containing/libmylib-so
关于c - 在哪里更改 LD_LIBRARY_PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59498560/