gpt4 book ai didi

c - 当我运行这个非常基本的基于 SQLite3 的 C 文件时,为什么我总是得到 "Killed: 9"?

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

我有这个 super 基本的 C 文件:

#include <sqlite3.h>
#include <stdio.h>

int main(void) {

printf("%s\n", sqlite3_libversion());

return 0;
}

在同一目录中,我从the downloads page on sqlite.org 下载了sqlite3.hsqlite3.csqlite3ext.h。 .

然后我运行 gcc -c main.c。然后 chmod +x main.o。然后是./main.o。每次我得到:

Killed: 9

我做错了什么?

最佳答案

您不能像那样直接执行可重定位目标文件。试试这个:

gcc main.c -o main -lsqlite3  

这适用于安装了 libsqlite3-dev 软件包的 Ubuntu。运行主要结果:

 3.8.2

-o 标志指定可执行文件的名称。如果您省略 -o main,您将在大多数平台上使用 gcc 获得一个名为 a.out 的文件(在 windows+cygwin 上可能是 a.exe?)。无论哪种方式,该文件都已经是可执行文件,因此您可以跳过 chmod +x

-lsqlite3 标志告诉编译器也链接到 sqlite3 库中。

如果您从头开始构建 sqlite3,您可能还需要 -I-L 标志来告诉编译器在哪里寻找库和头文件。

在您的命令中,“-c”标志会跳过链接阶段并生成一个可重定位对象,否则,gcc 将生成一个可执行文件。

您可以使用 readelf -h main.o 使用原始命令的输出,使用 readelf -h main 使用我建议的命令的输出,或者只是 file main.ofile main 以查看文件类型的差异。

关于c - 当我运行这个非常基本的基于 SQLite3 的 C 文件时,为什么我总是得到 "Killed: 9"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28179479/

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