When compiling llink you need to chose if you want to use OpenSSL, libdvdread and libdvdcss. Generally we have no reason to use SSL with link so I will skip this compile time step.
Unix, OsX and other native compiles
The default should work.
# ./configure --without-openssl # make # file src/llink
The file command is not necessary, but it shows you where we expect the binary to end up.
# ./configure --without-openssl # make
If you want to build libdvdcss in statically (so there is just one binary, no shared library dependencies)
# cd libdvdcss-1.2.10 # ./configure --enable-static # make # cd ../ # cd llink-2.2.0 # ./configure --without-openssl --with-dvdcss-tree=`pwd`/../libdvdcss-1.2.10/ # make
Download Visual Devstudio C++ 2010 from Microsoft and install.
Download the OpenSSL for Windows dev package.  Install it, usually at C:/OpenSSL but you can pick any place.
Setup a new Environment Variable, usually done in "My Computer / Properties / Advanced / Environment Variables". Create a new variable called SSL, and set it to the location of your OpenSSL install. Ie, C:/OpenSSL/.
Download source package, and load the llink.vcproj inside "win32/" directory. Change the default project from libdirlist to llink and hit compile.
All file paths should be relative, but sometimes they are not :(
For example when compiling for the PCH A-100, you download the toolchain that applies to your arch. In this case, it installs into /usr/local/mips/ with a gcc binary named as /usr/local/mips/bin/mipsel-linux-gcc.
First make sure your PATH is updated so that it can find the executable.
# export PATH=$PATH:/usr/local/mips/bin/ # which mipsel-linux-gcc /usr/local/mips/bin/mipsel-linux-gcc
Great. If you want to have libdvdcss we need to compile that first. If you do not, you can skip this step.
# cd src/libdvdcss-1.2.10/ # ./configure --host=mipsel-linux-uclibc --enable-static # make # file src/.libs/libdvdcss.* src/.libs/libdvdcss.a: current ar archive src/.libs/libdvdcss.so.2.0.8: ELF 32-bit LSB shared object, MIPS, version 1 (SYSV), not stripped (a few other files, but at least one shows its compiled as MIPS)
Note that we have to use the full path /home/lundman/src/ to get to the libdvdcss-1.2.10/src includes.
Compiling llink. Now it is time to compile llink itself. The version number might change of course.
# cd src/llink-2.2.0/ # ./configure --host=mipsel-linux --enable-static --without-openssl --with-dvdcss-tree=/home/lundman/src/libdvdcss-1.2.10/ # make # file src/llink src/llink: ELF 32-bit LSB executable, MIPS, version 1 (SYSV), statically linked, not stripped
Naturally, if you do not want libdvdcss go with the shorter line:
# ./configure --host=mipsel-linux --enable-static --without-openssl # make
Known Compiling Issues
The main binary is linked against libdvdcss if requested, even though it need not be. You can omit "-ldvdcss" on the linking line of llink if it affects you.
On C200, if you compile -static, it will product the error:
../sysdeps/unix/sysv/linux/ia64/getpagesize.c:35: __getpagesize: Assertion `_rtld_global_ro._dl_pagesize != 0' failed.
So don't compile statically on C200.
Some systems get:
: undefined reference to `pthread_mutex_init'
and similar errors, change directory into the undvd directory, and copy'paste the final linking line and add "-lpthread" to it. This will be fixed in future.
On ReadyNAS, it will appear to hang after:
[root] listing '/c/media/' with flags 11
This is actually the 2nd process libdirlist core-dumping, in the call to getpwnam(). If llink is compiled statically. Please drop the -static.