1、编译Linux libquickfix.so
问题描述:
a.将windows下的使用编译工程上传到Linux,并按git官网给的编译步骤编译,./boostrap报错,文件存在格式问题
解决:windows下脚本文件移植Linux存在格式问题,需要dos2unix处理;
b.解决a问题后发现,需要安装libtool,安装之后重新执行,出现问题configure.ac文件存在.ibtoolize: AC_CONFIG_MACRO_DIR([./aclocal]) conflicts with ACLOCAL_AMFLAGS=-I ./aclocal,不确定是什么问题?
解决:在确定configure.ac文件无法通过dos2unix调整(确实存在
AC_CONFIG_MACRO_DIR这个语句需要执行),发现不能使用windows下载的编译工程,重新去找可以在Linux下编译的工程文件包,找到了需要"安全上网"的链接下载:
https://sourceforge.net/projects/quickfix/files/quickfix/1.15.1/quickfix-1.15.1.tar.gz/;
c.再次编译,前几步骤没问题,make报错;提示libtool版本问题——“libtool: Version mismatch error”
解决:
d.编译libquickfix.so成功
2、使用Linux libquickfix.so做demo
说明:建议先在windows下调通demo,毕竟gdb下调试环境比较恶劣;demo实现quickfix的业务段,去接到服务器某接口数据即表示成功。
demo只有一个头文件,一个执行文件,比较简单;
a.发现windows下编译demo成功,Linux编译报错;问题如图:
解决:
发现在头文件在做fromApp()声明的时候没有加throw(…);加完如下表示,编译demo成功;
编译命令:g++ -O3 -Wall -std=c++11 -I./include quickfixClient.cpp -o demo -L./ -lquickfix -Wl,-rpath=./
///每个应用级别的消息将通过该方法处理,如委托指令,执行报告,证券信息以及市场数据。
virtual void fromApp( const FIX::Message& message, const FIX::SessionID& sessionID)
throw(FIX::FieldNotFound, FIX::IncorrectDataFormat, FIX::IncorrectTagValue, FIX::UnsupportedMessageType);
把配置加好,执行demo,如图可以收到了数据了~~~