Skip to content

Instantly share code, notes, and snippets.

@baixiangcpp
Created August 24, 2018 16:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save baixiangcpp/201aa6f32b14ae89cf70acd143274b7d to your computer and use it in GitHub Desktop.
Save baixiangcpp/201aa6f32b14ae89cf70acd143274b7d to your computer and use it in GitHub Desktop.
Makefile for seafile client
version = 6.2.4
THREADS = 4
HOST_OS = MINGW32
JANSSONDIR = jansson-2.11
LIBEVENTDIR = libevent-2.1.8-stable
LIBSEARPCDIR = libsearpc-3.1-latest
SEAFILEDIR = seafile-$(version)
SEAFILECLIENTDIR = seafile-client-$(version)
ifeq ($(HOST_OS),)
PREFIX = $(shell pwd)/build
export PATH = $(PREFIX)/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/bin
export PKG_CONFIG_PATH = $(PREFIX)/lib/pkgconfig
export C_INCLUDE_PATH = $(PREFIX)/include
export CPLUS_INCLUDE_PATH = $(PREFIX)/include
export PYTHON_DIR = $(PREFIX)/python
else
HOST = i686-w64-mingw32
BUILD = x86_64-redhat-linux-gnu
TARGET = i686-w64-mingw32
PREFIX = $(shell pwd)/ms-build
OPTION = --host=$(HOST) --build=$(BUILD) --target=$(TARGET)
TOOLCHAIN = -DCMAKE_TOOLCHAIN_FILE=/home/eric/Toolchain-cross-linux.cmake
export PATH = $(PREFIX)/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/bin
export PKG_CONFIG = mingw32-pkg-config
export PKG_CONFIG_PATH = /usr/$(TARGET)/sys-root/mingw/lib/pkgconfig:$(PREFIX)/lib/pkgconfig
export C_INCLUDE_PATH = $(PREFIX)/include:/usr/$(TARGET)/sys-root/mingw/include
export CPLUS_INCLUDE_PATH = $(PREFIX)/include
export PYTHON_DIR = $(PREFIX)/python
endif
jansson:
cd $(JANSSONDIR);\
./configure --prefix=$(PREFIX) $(OPTION);\
make -j $(THREADS);\
make install
libevent:
cd $(LIBEVENTDIR);\
./configure --prefix=$(PREFIX) $(OPTION);\
make -j $(THREADS); \
make install
libsearpc: jansson libevent
cd $(LIBSEARPCDIR); \
sed -i 's/build_os/host_os/g' configure.ac;\
bash ./autogen.sh; \
./configure --prefix=$(PREFIX) $(OPTION); \
make -j $(THREADS); \
make install
seafile: libsearpc
cd $(SEAFILEDIR);\
sed -i 's/Rpc.h/rpc.h/g' lib/utils.c;\
sed -i 's/build_os/host_os/g' configure.ac;\
sed -i 's/lRpcrt4/lrpcrt4/g' configure.ac;\
sed -i 's/AccCtrl.h/accctrl.h/g' daemon/set-perm.c;\
sed -i 's/AclApi.h/aclapi.h/g' daemon/set-perm.c;\
bash ./autogen.sh;\
./configure --prefix=$(PREFIX) $(OPTION);\
make -j $(THREADS);\
make install
seafileclient:seafile
cd $(SEAFILECLIENTDIR);\
sed -i 's/ShlObj.h/shlobj.h/g' src/ui/init-seafile-dialog.cpp;\
cmake $(TOOLCHAIN) -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$(PREFIX); \
make -j $(THREADS); \
make install
clean:
make -C $(SEAFILECLIENTDIR) clean; \
make -C $(LIBEVENTDIR) clean; \
make -C $(JANSSONDIR) clean; \
make -C $(LIBSEARPCDIR) clean; \
make -C $(SEAFILEDIR) clean
@dandadianshi
Copy link

文档最后部分提到的
./install.sh #仅需执行一回
这个install.sh并没有找到,请问是哪个目录下的

@liuleinet
Copy link

运行make seafileclient后,提示-lssl : No such file or directory还有-lcrypto,各种方法都试过了,就是不行!openssl安装过了,是不是还有什么路径之类的要求呀? 大神,就这个卡住了,执行不下去

@baixiangcpp
Copy link
Author

运行make seafileclient后,提示-lssl : No such file or directory还有-lcrypto,各种方法都试过了,就是不行!openssl安装过了,是不是还有什么路径之类的要求呀? 大神,就这个卡住了,执行不下去

很久没玩过seafile了 ,看你的报错应该就是openssl-devel 没装。

@liuleinet
Copy link

运行make seafileclient后,提示-lssl : No such file or directory还有-lcrypto,各种方法都试过了,就是不行!openssl安装过了,是不是还有什么路径之类的要求呀? 大神,就这个卡住了,执行不下去

很久没玩过seafile了 ,看你的报错应该就是openssl-devel 没装。

装是装的,就是很奇怪,我用openssl version -a 看到的版本有几个,对了,大神,我方便加你微信吗?我的微信是:13338859466

@liuleinet
Copy link

运行make seafileclient后,提示-lssl : No such file or directory还有-lcrypto,各种方法都试过了,就是不行!openssl安装过了,是不是还有什么路径之类的要求呀? 大神,就这个卡住了,执行不下去

很久没玩过seafile了 ,看你的报错应该就是openssl-devel 没装。

装是装的,就是很奇怪,我用openssl version -a 看到的版本有几个,对了,大神,我方便加你微信吗?我的微信是:13338859466

我用这个方式编译一个是可以的,把-lssl -lcrypto放到命令,gcc -o my_program my_program.c -I/usr/include -lssl -lcrypto,但是我执行make seafileclient就不行了

@baixiangcpp
Copy link
Author

运行make seafileclient后,提示-lssl : No such file or directory还有-lcrypto,各种方法都试过了,就是不行!openssl安装过了,是不是还有什么路径之类的要求呀? 大神,就这个卡住了,执行不下去

很久没玩过seafile了 ,看你的报错应该就是openssl-devel 没装。

装是装的,就是很奇怪,我用openssl version -a 看到的版本有几个,对了,大神,我方便加你微信吗?我的微信是:13338859466

我用这个方式编译一个是可以的,把-lssl -lcrypto放到命令,gcc -o my_program my_program.c -I/usr/include -lssl -lcrypto,但是我执行make seafileclient就不行了

VERBOSE=1 make xx 用VERBOSE可以把具体的链接过程显示出来,具体你自己排查一下,应该很容易。

@liuleinet
Copy link

现在显示recipe for target 'libjansson.la' failed 错误了,大神,这个是啥造成的问题

@liuleinet
Copy link

我现在换成fedora 28系统后,编译make seafileclient后报QuaZIP三方库的错误了,大神,这方面有遇到过没

@liuleinet
Copy link

seafile-applet.exe 是生成了,但是放到windows下,不知道用qt的mingw什么版本的dll了,缺少好多dll

@baixiangcpp
Copy link
Author

seafile-applet.exe 是生成了,但是放到windows下,不知道用qt的mingw什么版本的dll了,缺少好多dll

https://github.com/lucasg/Dependencies 用这个分析下, 缺的都能在你的编译环境上找到

@liuleinet
Copy link

seafile-applet.exe 是生成了,但是放到windows下,不知道用qt的mingw什么版本的dll了,缺少好多dll

https://github.com/lucasg/Dependencies 用这个分析下, 缺的都能在你的编译环境上找到

谢谢大神,发现这个exe执行还真不容易!各种试错

@liuleinet
Copy link

大神,Qt5Core.dll和Qt5Widgets.dll在Dependencies报红,几个函数错误,这个是不是和QT5具体的哪个版本的dll有关?我下了好久个版本的dll,替换了都不行,不知道怎么解决了,求帮助!谢谢

@liuleinet
Copy link

大神,Qt5Core.dll和Qt5Widgets.dll在Dependencies报红,几个函数错误,这个是不是和QT5具体的哪个版本的dll有关?我下了好久个版本的dll,替换了都不行,不知道怎么解决了,求帮助!谢谢

这个问题我全部搞定了,没问题了

@liuleinet
Copy link

对了,SeaDrive Client有研究过交叉编译的版本不

@baixiangcpp
Copy link
Author

对了,SeaDrive Client有研究过交叉编译的版本不

这是个啥,很久没用过seafile了

@liuleinet
Copy link

对了,SeaDrive Client有研究过交叉编译的版本不

这是个啥,很久没用过seafile了

是它的一个挂载盘

@tdzyaosi
Copy link

大神,我在Makefile中写的是,export PKG_CONFIG_PATH = $(PREFIX)/lib/pkgconfig:/usr/$(TARGET)/sys-root/mingw/lib/pkgconfig, 两个路径中间用:隔开,到了编译的时候,就变成,-L/usr/i686-w64-mingw32/sys-root/mingw/home/ys/Documents/ms-build/lib,中间连在一起,报错,找不到-levent, -lsearpc, -ljansson,该怎么解决

@liuleinet
Copy link

liuleinet commented Nov 23, 2023 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment