• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

OTClient Problems compiling on Ubuntu 20

manojo

New Member
Joined
Apr 5, 2020
Messages
6
Reaction score
0
When I try to compile OTClient by Edubart I get this errors only on Ubuntu 20

Bash:
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libvorbis.a(psy.o): in function `setup_tone_curves':
(.text+0x11e2): undefined reference to `__log_finite'
/usr/bin/ld: (.text+0x122e): undefined reference to `__log_finite'
/usr/bin/ld: (.text+0x1406): undefined reference to `__exp_finite'
/usr/bin/ld: (.text+0x1434): undefined reference to `__exp_finite'
/usr/bin/ld: (.text+0x15c7): undefined reference to `__exp_finite'
/usr/bin/ld: (.text+0x15f5): undefined reference to `__exp_finite'
/usr/bin/ld: (.text+0x1744): undefined reference to `__exp_finite'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libvorbis.a(psy.o):(.text+0x1870): more undefined references to `__exp_finite' follow
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libvorbis.a(psy.o): in function `_vp_psy_init':
(.text+0x1dee): undefined reference to `__log_finite'
/usr/bin/ld: (.text+0x1ea5): undefined reference to `__log_finite'
/usr/bin/ld: (.text+0x1f1e): undefined reference to `__log_finite'
/usr/bin/ld: (.text+0x2048): undefined reference to `__exp_finite'
/usr/bin/ld: (.text+0x24a3): undefined reference to `__log_finite'
/usr/bin/ld: (.text+0x2577): undefined reference to `__log_finite'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libvorbis.a(sharedbook.o): in function `_float32_pack':
(.text+0xd6): undefined reference to `__log_finite'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libvorbis.a(sharedbook.o): in function `_book_maptype1_quantvals':
(.text+0x444): undefined reference to `__pow_finite'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libvorbis.a(mdct.o): in function `mdct_init':
(.text+0xd01): undefined reference to `__log_finite'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libvorbis.a(lsp.o): in function `vorbis_lsp_to_curve':
(.text+0x5ff): undefined reference to `__exp_finite'
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libvorbis.a(lsp.o): in function `vorbis_lpc_to_lsp':
(.text+0xa48): undefined reference to `__acosf_finite'
/usr/bin/ld: (.text+0xa78): undefined reference to `__acosf_finite'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/otclient.dir/build.make:2260: otclient] Error 1
make[1]: *** [CMakeFiles/Makefile2:104: CMakeFiles/otclient.dir/all] Error 2
make: *** [Makefile:130: all] Error 2

Does someone else had it and how do I solve it?
Thanks in advance
 
OP
manojo

manojo

New Member
Joined
Apr 5, 2020
Messages
6
Reaction score
0
Lua:
sudo apt install libogg-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libogg-dev is already the newest version (1.3.4-0ubuntu1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Yes, I have everything installed following the Linux Compiling tutorial. I think theses problems are related to newer versions of packages being installed
 

Lessaire

Omniscient Hypervisor
Premium User
Joined
Dec 29, 2009
Messages
1,265
Solutions
46
Reaction score
423
Location
Oregon
Hello. I wasn't gonna respond to this thread. But oh well. Here I am.

The problem here is Ubuntu sucks ass. There is even steps in the official build guide which are bandages around the fact that Ubuntu sucks ass.

Today I will teach you how to just fucking sidestep Ubuntu's shittiness.

First, examine your error logs.

Clearly, something is amiss with libvorbis. Now I know Vorbis is good software, so I'm just going to presume that Ubuntu is fucking up somewhere somehow. I don't really care. And neither should you.

Bash:
# to our sources!
cd ~/src

# come to me Vorbis!
git clone https://github.com/xiph/vorbis

# enter the Vorbis zone!
cd vorbis

# now lets do this thing apparently Ubuntu is too shitty to get done correctly
# wait, is that autogen? better make sure we got the stuff
sudo apt install -y debhelper # autotools suite on deck

# go go do it your fucking self
./autogen.sh
./configure
make -j $(nproc)

# Jesus, it's just like every other piece of software on Earth. Onwards to local installation!
sudo make install


# lets not take any fucking chances with this shit
# I mean, Ubuntu is fucking trash
cd ~/src
git clone https://github.com/openresty/luajit2 luajit-openresty
cd luajit-openresty
CFLAGS="-march=native -O2" make
sudo make install

# Not a single chance.
cd ~/src
hg clone https://hg.icculus.org/icculus/physfs/
cd physfs
mkdir build
cd build
cmake ./../
make -j $(nproc)
sudo make install


# Alrighty, lets fucking do this.
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib
cd ~/src
cd otclient-edubart

# Nuke and pave!
sudo rm -rf ./build
mkdir build
cd build

# we shall now feed our OTClient organic free range libraries that were never fed the gmo corn of Ubuntsanto
# with the help of some minor script wizardry, a bash array so we have a pretty way to specify numerous flags
# courtesy of Lessaire from the Ivory tower of Pacman, across from Castle Yum, before the astral gate Portage
# Needless to say, far far away from the sewage treatment plant of Dpkg in the Canonical Wastes
cmake_params=(
    "-DCMAKE_BUILD_TYPE:STRING='Release'"
    "-DCMAKE_CXX_FLAGS:STRING='-march=native'"

    "-DOpenGL_GL_PREFERENCE:STRING=GLVND"

    "-DLUAJIT:BOOL=ON"
    "-DLUAJIT_INCLUDE_DIR:PATH=/usr/local/include/luajit-2.1"
    "-DLUAJIT_LIBRARY:FILEPATH=/usr/local/lib/libluajit-5.1.so"

    "-DPHYSFS_INCLUDE_DIR:PATH=/usr/local/include"
    "-DPHYSFS_LIBRARY:FILEPATH=/usr/local/lib/libphysfs.a"

    "-DVORBISFILE_INCLUDE_DIR:PATH=/usr/local/include/vorbis/"
    "-DVORBISFILE_LIBRARY:FILEPATH=/usr/local/lib/libvorbisfile.so"
    "-DVORBIS_INCLUDE_DIR:PATH=/usr/local/include/vorbis/"
    "-DVORBIS_LIBRARY:FILEPATH=/usr/local/lib/libvorbis.so"
)

cmake ./../ ${cmake_params[@]}


Now here's the neat trick. Since you're learning how to do full DIY here, if it still bitches about one of these particular libs, just change the .so in the params array to an .a

Thats Windows speak for .dll to .lib aka its going to be statically linked instead of dynamically linked.
static linking == embedding in the executable
dynamic linking == calling the system linker to look for the right .so files (and same thing in Windows land, "you are missing x and x dll file")
 
Last edited:
OP
manojo

manojo

New Member
Joined
Apr 5, 2020
Messages
6
Reaction score
0
Holy sh** you are the real deal. All my years in this programming industry I never saw a so specific working tutorial able to fix the evil issues provided by my needs to have everything updated at the last version every time.

I have to say you messed up the line 35 of your script so I can see you are just a human. mdkir ftw :D and come on. Ubuntu rulez. Which distro do you prefer? Don't say you are windows fan. I forbid you.

Thanks for the support. I wish we could be friends to share knowledge with each other. As the wise one once said:"No one is so big that he cannot learn nor so small that he cannot teach".. I´m the big one in this phrase btw.

Thanks again, this solved my problem and probably many others with early ubuntu 20 versions
Post automatically merged:

Hello. I wasn't gonna respond to this thread. But oh well. Here I am.

The problem here is Ubuntu sucks ass. There is even steps in the official build guide which are bandages around the fact that Ubuntu sucks ass.

Today I will teach you how to just fucking sidestep Ubuntu's shittiness.

First, examine your error logs.

Clearly, something is amiss with libvorbis. Now I know Vorbis is good software, so I'm just going to presume that Ubuntu is fucking up somewhere somehow. I don't really care. And neither should you.

Bash:
# to our sources!
cd ~/src

# come to me Vorbis!
git clone https://github.com/xiph/vorbis

# enter the Vorbis zone!
cd vorbis

# now lets do this thing apparently Ubuntu is too shitty to get done correctly
# wait, is that autogen? better make sure we got the stuff
sudo apt install -y debhelper # autotools suite on deck

# go go do it your fucking self
./autogen.sh
./configure
make -j $(nproc)

# Jesus, it's just like every other piece of software on Earth. Onwards to local installation!
sudo make install


# lets not take any fucking chances with this shit
# I mean, Ubuntu is fucking trash
cd ~/src
git clone https://github.com/openresty/luajit2 luajit-openresty
cd luajit-openresty
CFLAGS="-march=native -O2" make
sudo make install

# Not a single chance.
cd ~/src
hg clone https://hg.icculus.org/icculus/physfs/
cd physfs
mdkir build
cd build
cmake ./../
make -j $(nproc)
sudo make install


# Alrighty, lets fucking do this.
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib
cd ~/src
cd otclient-edubart

# Nuke and pave!
sudo rm -rf ./build
mkdir build
cd build

# we shall now feed our OTClient organic free range libraries that were never fed the gmo corn of Ubuntsanto
# with the help of some minor script wizardry, a bash array so we have a pretty way to specify numerous flags
# courtesy of Lessaire from the Ivory tower of Pacman, across from Castle Yum, before the astral gate Portage
# Needless to say, far far away from the sewage treatment plant of Dpkg in the Canonical Wastes
cmake_params=(
    "-DCMAKE_BUILD_TYPE:STRING='Release'"
    "-DCMAKE_CXX_FLAGS:STRING='-march=native'"

    "-DOpenGL_GL_PREFERENCE:STRING=GLVND"

    "-DLUAJIT:BOOL=ON"
    "-DLUAJIT_INCLUDE_DIR:PATH=/usr/local/include/luajit-2.1"
    "-DLUAJIT_LIBRARY:FILEPATH=/usr/local/lib/libluajit-5.1.so"

    "-DPHYSFS_INCLUDE_DIR:PATH=/usr/local/include"
    "-DPHYSFS_LIBRARY:FILEPATH=/usr/local/lib/libphysfs.a"

    "-DVORBISFILE_INCLUDE_DIR:PATH=/usr/local/include/vorbis/"
    "-DVORBISFILE_LIBRARY:FILEPATH=/usr/local/lib/libvorbisfile.so"
    "-DVORBIS_INCLUDE_DIR:PATH=/usr/local/include/vorbis/"
    "-DVORBIS_LIBRARY:FILEPATH=/usr/local/lib/libvorbis.so"
)

cmake ./../ ${cmake_params[@]}


Now here's the neat trick. Since you're learning how to do full DIY here, if it still bitches about one of these particular libs, just change the .so in the params array to an .a

Thats Windows speak for .dll to .lib aka its going to be statically linked instead of dynamically linked.
static linking == embedding in the executable
dynamic linking == calling the system linker to look for the right .so files (and same thing in Windows land, "you are missing x and x dll file")
Holy sh** you are the real deal. All my years in this programming industry I never saw a so specific working tutorial able to fix the evil issues provided by my needs to have everything updated at the last version every time.

I have to say you messed up the line 35 of your script so I can see you are just a human. mdkir ftw :D and come on. Ubuntu rulez. Which distro do you prefer? Don't say you are windows fan. I forbid you.

Thanks for the support. I wish we could be friends to share knowledge with each other. As the wise one once said:"No one is so big that he cannot learn nor so small that he cannot teach".. I´m the big one in this phrase btw.

Thanks again, this solved my problem and probably many others with early ubuntu 20 versions
 

Lessaire

Omniscient Hypervisor
Premium User
Joined
Dec 29, 2009
Messages
1,265
Solutions
46
Reaction score
423
Location
Oregon
I have to say you messed up the line 35 of your script so I can see you are just a human
What you should see is that I typed this entire script in one go, and never tried to actually run it, because I didn't need to. That and I don't typically keep any Ubuntu shards on hand. If there was such minor error, I knew you'd be able to suss it out.

Ubuntu rulez.
I hope you aren't saying that with a straight face.

Which distro do you prefer?

1588828594187.png

Perhaps one day you will join us in the promise land, and run KDE Plasma on Arch Linux.
In this Ivory Tower where development on QT is a first class citizen.
And our cloud runs on the exquisite industrial reliability of CentOS and Fedora Core.
We never have to encounter strange decisions like you deal with in the land of dpkg.
It even comes with the wonderful benefits of learning how to be your own DDoS mitigator.
We never have to taint our eyes with Apache's horrid configs.
Joyous nginx uniformity with Lua FFI for L4Drop by the wonder of OpenResty.
We are our own Cloudflare here.
Bash:
# we shall now feed our OTClient organic free range libraries that were never fed the gmo corn of Ubuntsanto
# with the help of some minor script wizardry, a bash array so we have a pretty way to specify numerous flags
# courtesy of Lessaire from the Ivory tower of Pacman, across from Castle Yum, before the astral gate Portage
# Needless to say, far far away from the sewage treatment plant of Dpkg in the Canonical Wastes
 

messenoire

Well-Known Member
Joined
Sep 26, 2015
Messages
122
Reaction score
50
Location
127.0.0.1:7171
Bash:
# we shall now feed our OTClient organic free range libraries that were never fed the gmo corn of Ubuntsanto
# with the help of some minor script wizardry, a bash array so we have a pretty way to specify numerous flags
# courtesy of Lessaire from the Ivory tower of Pacman, across from Castle Yum, before the astral gate Portage
# Needless to say, far far away from the sewage treatment plant of Dpkg in the Canonical Wastes

Delet that fucking pony and we in biz bro
 

Gesior.pl

Mega Noob&LOL 2012
Senator
Premium User
Joined
Sep 18, 2007
Messages
2,145
Solutions
25
Reaction score
1,416
Location
PLand
There is also shorter fix for this issue than @Lessaire:
Add parameter to cmake:
Code:
cmake  -DUSE_STATIC_LIBS=OFF ..
Worked for me after upgrading 18.04 to 20.04. Fixed problems with physfs and vorbis.
 
Top