编译共享库,也从中调用函数

G-7*_*-71 6 c++ g++ shared-libraries

我有一个f2.cpp文件

// f2.cpp
#include <iostream>

void f2()
{
    std::cout << "It's a call of f2 function" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

我将cygwin与crosstool编译器gcc一起使用。

g++ -fPIC -c f2.cpp
g++ -shared -o libf2.so f2.o
Run Code Online (Sandbox Code Playgroud)

我有一个libf2.so文件。现在我想在f1库(也是共享对象)libf1.so中调用f2函数。

这是一个f1.cpp,我想乘f1.so

// f1.cpp
#include <iostream>
void f1()
{
    std::cout << "f1 function is calling f2()..." << std::endl;
    f2();
}
Run Code Online (Sandbox Code Playgroud)

我必须如何编译f1.cpp?我不想使用dlclose,dlerror,dlopen,dlsym ...最后我也想在main.cpp中也将f1.so用作共享库...而不使用dlclose,dlerror,dlopen,dlsym 。当我有一个f1.so时,我该如何编译main.cpp?

// main.cpp
#include <iostream>
int main()
{
    f1();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

bal*_*lki 3

在头文件中声明 f2()。并编译libf1.so,类似于libf2。

现在编译针对 f1 和 f2 的主链接。它应该看起来像这样 g++ -lf2 -lf1 -L /path/to/libs main.o