c - 如何在linux中链接编译.c和.so文件

标签 c

我有 crt284utest.c 和 crt_284u.so 文件。在 crt284utest.c 文件中,我使用了 dlopen()、dlclose()、dlsym()。现在我尝试使用以下命令进行编译: gcc c -O crt284utest.c 编译上述命令时,报错如下: gcc.real: c: 没有这样的文件或目录 进而 gcc crt_284u.o -ldl -o crt284utest 编译上述命令时,报错如下: gcc.real: crt_284u.o: 没有这样的文件或目录

最佳答案

这里介绍如何使用 gcc 在 linux 中进行编译::

$ gcc -ofirstprogramfirstprogram.c

如果您的文件名为firstprogram.c,则键入“-ofirstprogram”作为gcc 的参数。这基本上是 gcc 将创建的可执行文件的建议名称。如果您输入类似以下内容

$ gccfirstprogram.c

您将在与源 C 文件相同的目录中找到 a.out。这是 gcc 创建的可执行文件的默认名称。当您在一个目录中编译许多程序时,这会产生问题。因此,您可以使用 -o 选项后跟可执行文件的名称来覆盖它

$ gcc -o 你好第二个程序.c

将为名为 secondaryprogram.c 的源代码创建一个名为 hello 的可执行文件

运行您创建的可执行文件就像在提示符下键入以下内容一样简单。

$ ./firstprogram 或者 $ ./你好

关于c - 如何在linux中链接编译.c和.so文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19130541/

相关文章:

c - int 除以 unsigned int 导致翻转

c++ - 为什么有两种通过指针调用函数的方式?

c++ - 如何在 Linux 中找到具有写时复制的 fork 进程之间共享多少内存?

c - printf() 似乎正在破坏我的数据

c - 如何翻转 double 的指数(例如 1e300->1e-300)?

c - 关于 C 中的 switch{} 大小写?

c++ - gcc在编译期间是否自动对const值执行数学运算

c - 尝试用 C 编写 netlink 套接字程序时出错

java - 在Android studio中使用.so(共享对象)文件

c - 获取域名