ubuntu16.04下建立共享库并使用出现了问题

图片描述

lib.h

/*lib.h: pro1.c, pro2.c*/
#ifndef _LIB_H_
#define _LIB_H_
void pro1(int);
void pro2(char *);
#endif

pro1.c

#include<stdio.h>
void pro1(int arg)
{
    printf("hello: %d\n",arg);
}

pro2.c

#include<stdio.h>
void pro2(char *arg)
{
    printf("hello: %s\n",arg);
}

main.c

#include"lib.h"

int main()
{
    pro2("Linux");
    return 0;
}

图片描述

阅读 2.9k
1 个回答

前一个gcc语句是对的。后一个缺少了-lfoo,而大写L参数是指定库的搜索路径的目录,当前目录就不用这个参数了。
主要是你的库没有在系统搜索路径里,Linux默认是不加载当前目录的库的。你需要指定LD_LIBRARY_PATH环境变量,设置这个目录的路径(绝对路径)进去。
方法二是在/etc/ld.so.conf.d/目录下添加一个文件比如foo.conf,内容是这个目录的绝对路径。然后sudo ldconfig。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题