gpt4 book ai didi

c - 链接共享库时的问题

转载 作者:太空宇宙 更新时间:2023-11-04 00:09:04 24 4
gpt4 key购买 nike

下面是我如何使用共享库生成可执行文件的步骤。

  1. 我有三个文件:

    文件 libhello.c

    /* hello.c - demonstrate library use. */
    #include <stdio.h>
    void hello(void)
    {
    printf("Hello, library world./n");
    }

    文件 libhello.h

    /* hello.h - demonstrate library use. */
    void hello(void);

    文件main.c

    /* main.c -- demonstrate direct use of the "hello" routine */
    #include "hello.h"
    int main(void)
    {
    hello();
    return 0;
    }
  2. 我使用以下命令生成共享库。

    gcc -g -Wall -fPIC -c hello.c -o hello.o
    gcc -shared -W,soname,-libhello.so.0 -o libhello.so.0.0.0 hello.o
  3. 最后,我将库路径添加到 LD_LIBRARY_PATH 变量并尝试使用共享库创建可执行文件。

    export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
    ln -s libhello.so.0.0.0 libhello.so.0
    gcc -g -Wall -c main.c -o main.o -I.
    gcc -o main main.o -lhello -L.

但是,在最后一步,出现了一个错误:找不到-lhello。那么,我哪里错了?

谢谢。

最佳答案

gcc 在链接新程序时查找 libhello.solibhello.so.0 在搜索已链接程序的动态依赖项时使用。

换句话说:gcc -o main main.o -lhello -L. 查找 libhello.so./main查找 libhello.so.0。这允许为遗留程序提供多个版本的库,同时精确识别与安装的 header 匹配的库。

符号链接(symbolic link) libhello.so -> libhello.so.0.0.0 应该可以解决问题。

关于c - 链接共享库时的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10830755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com