2009-09-27 7 views
0

Я искал в Интернете пару дней и не могу найти четких инструкций о том, как это сделать.Как скомпилировать динамическую библиотеку?

SQLite не имеет математических функций, таких как синус, косинус и т. Д. Я нашел библиотеку, которая расширяет SQLite и добавляет эти функции, но я не могу понять, как скомпилировать библиотеку.

http://lhealy.livejournal.com/6306.html

Я пробовал почти все (за исключением решения). Я скачал источник SQLite, конфигурировать и использовать марку, а затем попытался построить динамическую библиотеку с помощью следующей команды в исходном каталоге внутренней линии

gcc -fPIC func_ext.c -shared -o libsqlitefunctions.so -Isqlite3 -Isqlite3/src

У меня есть источник sqlite3 внутри этой директории так -I флаги должны быть направлены в правильный каталог. Это ошибка, которую я получаю.

func_ext.c:91: error: static declaration of ‘acosh’ follows non-static declaration 
func_ext.c:99: error: static declaration of ‘asinh’ follows non-static declaration 
func_ext.c:107: error: static declaration of ‘atanh’ follows non-static declaration 
func_ext.c:403: error: conflicting types for ‘isblank’ 
/usr/include/ctype.h:242: error: previous definition of ‘isblank’ was here 
func_ext.c: In function ‘properFunc’: 
func_ext.c:422: warning: pointer targets in passing argument 1 of ‘sqlite3StrDup’ differ in signedness 
func_ext.c:422: warning: pointer targets in assignment differ in signedness 
func_ext.c: In function ‘padlFunc’: 
func_ext.c:463: warning: pointer targets in assignment differ in signedness 
func_ext.c: In function ‘padrFunc’: 
func_ext.c:509: warning: pointer targets in assignment differ in signedness 
func_ext.c: In function ‘padcFunc’: 
func_ext.c:556: warning: pointer targets in assignment differ in signedness 
func_ext.c: In function ‘strfilterFunc’: 
func_ext.c:607: warning: pointer targets in assignment differ in signedness 
func_ext.c:608: warning: pointer targets in assignment differ in signedness 
func_ext.c:616: warning: pointer targets in passing argument 1 of ‘sqlite3ReadUtf8’ differ in signedness 
func_ext.c:618: warning: pointer targets in passing argument 1 of ‘sqlite3ReadUtf8’ differ in signedness 
func_ext.c: In function ‘_substr’: 
func_ext.c:654: warning: pointer targets in passing argument 1 of ‘sqlite3ReadUtf8’ differ in signedness 
func_ext.c:659: warning: pointer targets in passing argument 1 of ‘sqlite3ReadUtf8’ differ in signedness 
func_ext.c:664: warning: pointer targets in passing argument 1 of ‘sqlite3ReadUtf8’ differ in signedness 
func_ext.c:665: warning: pointer targets in passing argument 1 of ‘sqlite3ReadUtf8’ differ in signedness 
func_ext.c: In function ‘charindexFunc’: 
func_ext.c:716: warning: pointer targets in passing argument 1 of ‘_substr’ differ in signedness 
func_ext.c:716: warning: pointer targets in passing argument 2 of ‘_substr’ differ in signedness 
func_ext.c: In function ‘rightFunc’: 
func_ext.c:775: warning: pointer targets in assignment differ in signedness 
func_ext.c:779: warning: pointer targets in passing argument 1 of ‘sqlite3ReadUtf8’ differ in signedness 
func_ext.c: In function ‘ltrimFunc’: 
func_ext.c:833: warning: pointer targets in assignment differ in signedness 
func_ext.c: In function ‘rtrimFunc’: 
func_ext.c:851: warning: pointer targets in assignment differ in signedness 
func_ext.c: In function ‘trimFunc’: 
func_ext.c:872: warning: pointer targets in assignment differ in signedness 
func_ext.c: In function ‘replaceFunc’: 
func_ext.c:914: warning: pointer targets in assignment differ in signedness 
func_ext.c:915: warning: pointer targets in assignment differ in signedness 
func_ext.c:916: warning: pointer targets in assignment differ in signedness 
func_ext.c: In function ‘reverseFunc’: 
func_ext.c:975: warning: pointer targets in assignment differ in signedness 
func_ext.c:982: warning: pointer targets in passing argument 1 of ‘sqlite3ReadUtf8’ differ in signedness 
func_ext.c: In function ‘differenceFunc’: 
func_ext.c:1336: warning: pointer targets in passing argument 1 of ‘sqlite3ReadUtf8’ differ in signedness 
func_ext.c:1336: warning: pointer targets in passing argument 1 of ‘sqlite3ReadUtf8’ differ in signedness 

Спасибо! Sandro

ответ

0

Это ошибки компилятора, а не ошибки компоновщика.
Вам нужно, чтобы ваша программа была скомпилирована (обычным способом), прежде чем вы сможете создать ее как общую библиотеку.

1

Рассмотрите возможность использования g ++ вместо gcc, который автоматически устанавливает правильные настройки при компиляции C++. Например, с помощью следующего кода:

int f(int x) 
{ 

} 

int f(int x, int y) 
{ 

} 

int main(int argc, char* argv[]) 
{ 

} 

... выдает ошибку:

test.c:7: error: conflicting types for ‘f’ 
test.c:2: error: previous definition of ‘f’ was here 

Где, как с г ++, это хорошо. Может быть, что код действительно пытается быть c и определяет перегрузки, которые были бы незаконными и более серьезными, но я бы дал этот снимок первым.

Смежные вопросы