2016-02-25 84 views
0

我想用gSoap建立一個靜態程序。C靜態程序與gSoap

我編譯程序使用以下命令:程序運行後

gcc -c -Wall -g -I./gSoap/ -I/usr/share/gsoap/plugin/ -c -o singlePayment.o singlePayment.c 
gcc -o singlePayment singlePayment.o ./gSoap/soapC.c ./gSoap/soapClient.c -lgsoapssl -L/usr/lib/mysql -L/usr/lib -L/lib -lmysqlclient -lssl -lz -lcrypto -Wl,--no-as-needed -ldl -static -fno-stack-protector 

錯誤:

*** stack smashing detected ***: ./singlePayment terminated 
======= Backtrace: ========= 
[0x6ee755] 
[0x6ee71e] 
[0x59aa2a] 
[0x59ab34] 
[0x57fcfe] 
[0x400762] 
[0x6aa4a3] 
[0x400469] 
======= Memory map: ======== 
00400000-00833000 r-xp 00000000 08:01 6687104       /home/valon/paypalSOAP/singlePayment 
00a32000-00a43000 rw-p 00432000 08:01 6687104       /home/valon/paypalSOAP/singlePayment 
00a43000-00a72000 rw-p 00000000 00:00 0 
017e5000-01863000 rw-p 00000000 00:00 0         [heap] 
7f2cc5007000-7f2cc501a000 r-xp 00000000 08:01 9962058     /lib/x86_64-linux-gnu/libresolv-2.13.so 
7f2cc501a000-7f2cc5219000 ---p 00013000 08:01 9962058 

       ... 

7ffe8ffe7000-7ffe8ffe8000 r-xp 00000000 00:00 0       [vdso] 
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0     [vsyscall] 
Abgebrochen 

相同的程序工作,如果我complie,作爲無靜電。

gcc -c -Wall -g -I./gSoap/ -I/usr/share/gsoap/plugin/ -c -o singlePayment.o singlePayment.c 
gcc -o singlePayment singlePayment.o ./gSoap/soapC.c ./gSoap/soapClient.c /usr/share/gsoap/plugin/logging.c -lm -lgsoapssl -lssl 

任何想法爲什麼會發生這種情況?

+0

http://stackoverflow.com/a/1347464/4181011 –

回答

1

看來您正在使用OpenSSL。如果是這樣,請編譯gcc -DWITH_OPENSSL以確保您可以使用soap_ssl_X函數,並且stdsoap2.h中聲明的引擎上下文將啓用SSL。