带有 gSoap 的 C 静态程序
C static program with gSoap
我正在尝试用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
如果我遵守它,则相同的程序可以正常工作,因为没有静态的。
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
知道为什么会这样吗?
您似乎正在使用OpenSSL。如果是这样,请使用 gcc -DWITH_OPENSSL
进行编译以确保您可以使用 soap_ssl_X
函数,并且 stdsoap2.h
中声明的引擎上下文将启用 SSL。
相关文章:
- 基于boost的程序的静态链接——zlib问题
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 是否可以依赖函数范围的静态变量来执行程序关闭期间调用的方法?
- 如何在 docker 中使用静态 opencv 库编译 c++ 应用程序
- C++实用程序::转换在静态链接库中不起作用
- 为什么当我在 C 程序中链接静态库时会"undefined symbol"?
- 错误: 无效使用非静态数据成员"应用程序::应用程序构造函数"
- 在发布模式下启动使用库的静态链接编译的应用程序时出错
- 程序如何知道静态变量是否需要初始化?
- 将 C# 对象(包含静态对象成员)作为参数传递给 C++/CLI 程序
- 如何对以下程序使用静态或动态转换
- C++控制台应用程序调用C++/CLI静态库
- 如何在应用程序子项目中将静态库与gradle子项目链接起来
- 我应该在这个程序中使用静态内存分配还是动态内存分配
- 使用静态 Qt 构建在 Linux 上部署 Qt5 应用程序
- 全局静态生存期?他们会让你的程序崩溃吗?
- 为什么G 不链接静态程序
- QT https SSL支持静态QT静态程序构建 - 仍然需要openssl dll
- 带有 gSoap 的 C 静态程序
- QT https SSL支持静态QT静态程序构建 - 获取“协议”https“未知”