c - 在哪里更改 LD_LIBRARY_PATH

标签 c linux gcc compilation

我想将这些文件编译成可执行文件。

//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/

相关文章:

linux - 如何从外部模块导出符号?

c - 我应该在 Visual Studio 中的哪里寻找输出?

C - Fgets &Scanf 从文本文件中读取

c - 分割参数

c - 麻烦 : C Declaration of integer array of unknown size

linux - 编辑一个已经存在的补丁文件

linux - 编译 libsmtp 时出错(找不到 glib-config)

linux - 有没有 gcc 的替代品可以在 *nix 下进行实际开发?

php - 如何使用 php 从 Linux 服务器连接到 Windows 服务器中的数据库?

c++ - 为什么 GCC 中的 -Wunused-variable 即使在静态常量上也会产生错误?