• 104阅读
  • 3回复

qTox源码编译-Centos7.6 [复制链接]

上一主题 下一主题
离线yeshi_long
 

只看楼主 倒序阅读 楼主  发表于: 01-03

1.准备编译的基础依赖库
  1. yum install libtool autoconf automake check check-devel libsodium-devel opus-devel libvpx-devel libasan
  2. yum install gtk2-devel libexif-devel libXScrnSaver-devel openal-soft-devel openssl-devel qrencode-devel
  3. yum install qt-creator qt-devel qt-doc qt5-linguist qt5-qtsvg qt5-qtsvg-devel qtsingleapplication

2.安装ffmpeg库
  1. 安装epel-release
  2. yum install epel-release
  3. 安装nux存储库
  4. rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
  5. 安装ffmpeg和ffmpeg -devel软件包yum install ffmpeg ffmpeg-devel
3.安装sqlcipher源码编译安装
  1. Githu上下sqlcipher源码
  2. yum install -y tcl.i686 tcl.x86_64 tcl-devel.i686 tcl-devel.x86_64
  3. 进入下载的sqlcipher源码目录中
  4. ./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto"
  5. make & make install


准备工作完成后开始编译主要代码
使用的是cmake-3.23.0-rc5
下载各源码 c-toxcorecmptoxext,tox_extension_messages,qTox
  1. https://github.com/toktok/c-toxcore
  2. https://github.com/camgunz/cmp/tree/e836703291392aba9db92b46fb47929521fac71f
  3. https://github.com/toxext/toxext
  4. https://github.com/toxext/tox_extension_messages
  5. https://github.com/qTox/qTox


4.编译c-toxcore
  1. 第一坑编译c-toxcore提示cmp的错误,原来是少cmp源码
  2. 下载cmp代码解压放入c-toxcore/third_party/cmp中
  3. cmake . -DBOOTSTRAP_DAEMON=OFF
  4. make -j$(nproc)
  5. make install
5.编译toxext
  1. export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/lib64/pkgconfig"
  2. cmake .
  3. make -j$(nproc)
  4. make install
6.编译tox_extension_messages
  1. cmake .
  2. make -j$(nproc)
  3. make install
7.编译qTox
  1. export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/lib64/pkgconfig"
  2. export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig"
  3. cmake .
  4. make -j$(nproc)
编译qTox的时候会碰到3类错误

编译参数错误,没去找源头在哪里,直接把make文件中的 -Wnull-dereference和-Wduplicated-cond删除,大概有十来个地方。
这个问题的原因是这2个参数是GCC6开始加入的新特性,但是centos7.6的是GCC是4.8.5,且不想升级GCC。
  1. c++: 错误:unrecognized command line option ‘-Wnull-dereference’
  2. c++: 错误:unrecognized command line option ‘-Wduplicated-cond’
  3. make[2]: *** [util/CMakeFiles/util_library.dir/util_library_autogen/mocs_compilation.cpp.o] 错误
  4. [backcolor=#f7f7f7][color=#000000]修改util/CMakeFiles/util_library.dir/[/color][/backcolor][color=#000000]flags.make中的[/color]-Wnull-dereference和-Wduplicated-cond[color=#000000][font=Arial]删除[/font][/color]


第二类错误C++新特性不支持,需要修改源码,类构造函数初始化列表使用{}赋值,改成()赋值,几十处需要修改
  1. 错误:用类型为‘<brace-enclosed initializer list>’的右值初始化类型为‘IAudioSettings&’的非常量引用无效
  2. 修改前
  3. OpenAL::OpenAL(IAudioSettings& _settings)
  4.     : settings{_settings}
  5.     , audioThread{new QThread}
  6. 修改后
  7. OpenAL::OpenAL(IAudioSettings& _settings)
  8.     : settings(_settings)
  9.     , audioThread(new QThread)
第三类错误 关于字符串转QString的错误 把比如 return "veron ";改成 return QString("veron ")





这个软件的厉害之处在于
任意两个在线的qTox,不需要公网上的中央服务器,两者之间直接传消息,语音,视频,文件












LS
离线圣域天子

只看该作者 1楼 发表于: 01-03
> 这个软件的厉害之处在于
> 任意两个在线的qTox,不需要公网上的中央服务器,两者之间直接传消息,语音,视频,文件。
真的假的?你确认过吗???
怎么个工作原理?
离线yeshi_long

只看该作者 2楼 发表于: 01-04
回 圣域天子 的帖子
圣域天子:> 这个软件的厉害之处在于
> 任意两个在线的qTox,不需要公网上的中央服务器,两者之间直接传消息,语音,视频,文件。
真的假的?你确认过吗???
怎么个工作原理? (2023-01-03 09:49) 

至少验证过公司客户端和家里客户端互传文件。
另外了解一下DHT网络结构的构建过程
LS
离线圣域天子

只看该作者 3楼 发表于: 01-17
发个我的号,大家有兴趣的用起来~~~

002537C755CDF86B89EAD46D89DE06D108DF8E3E567F34B28016FD4D881CE40A079E40FAFAC9
快速回复
限100 字节
 
上一个 下一个