在linux上
[abcdeuser@localhost ~]$ ls
sqlite-amalgamation-3280000 sqlite-amalgamation-3280000.zip
[abcdeuser@localhost ~]$ mv sqlite-amalgamation-3280000 sqlite
[abcdeuser@localhost ~]$ cd sqlite
[abcdeuser@localhost sqlite]$ ls
shell.c sqlite3.c sqlite3.h sqlite3ext.h
[abcdeuser@localhost sqlite]$ gcc shell.c sqlite3.c -lpthread -ldl
[abcdeuser@localhost sqlite]$ ll
total 9952
-rwxrwxr-x 1 abcdeuser
user 1198337 Jun 11 09:26 a.out
-rw-r--r-- 1 abcdeuser abcdeuser 527983 Apr 17 04:06 shell.c
-rw-r--r-- 1 abcdeuser abcdeuser 7864301 Apr 17 04:06 sqlite3.c
-rw-r--r-- 1 abcdeuser abcdeuser 559572 Apr 17 04:06 sqlite3.h
-rw-r--r-- 1 abcdeuser abcdeuser 33981 Apr 17 04:06 sqlite3ext.h
[abcdeuser@localhost sqlite]$ mv a.out sqlite3
[abcdeuser@localhost sqlite]$ mv ../csv.c .
[abcdeuser@localhost sqlite]$ gcc -g -fPIC -shared csv.c -o csv.so
csv.c:42:24: error: sqlite3ext.h: No such file or directory
[abcdeuser@localhost sqlite]$ gcc -g -fPIC -shared csv.c -o csv.so -I .
[abcdeuser@localhost sqlite]$ ll
total 10024
-rw-rw-r-- 1 abcdeuser abcdeuser 28486 Jun 11 09:27 csv.c
-rwxrwxr-x 1 abcdeuser abcdeuser 44022 Jun 11 09:29 csv.so
-rw-r--r-- 1 abcdeuser abcdeuser 527983 Apr 17 04:06 shell.c
-rwxrwxr-x 1 abcdeuser abcdeuser 1198337 Jun 11 09:26 sqlite3
-rw-r--r-- 1 abcdeuser abcdeuser 7864301 Apr 17 04:06 sqlite3.c
-rw-r--r-- 1 abcdeuser abcdeuser 559572 Apr 17 04:06 sqlite3.h
-rw-r--r-- 1 abcdeuser abcdeuser 33981 Apr 17 04:06 sqlite3ext.h
[abcdeuser@localhost sqlite]$ ./sqlite3
SQLite version 3.28.0 2019-04-16 19:49:53
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .load ./csv
sqlite> CREATE VIRTUAL TABLE csv USING csv(filename=../t.csv);
sqlite> select * from csv;
name|age
tom|23
cat|34