Kotlin Native on openSUSE Tumbleweed
I have started diving deeper into Kotlin and doing a little tinkering with Kotlin Native. I am using IntelliJ to make it easy, and I ran into an issue. After creating a new Kotlin Native project using the IntelliJ wizard, the tutorial I ran into a build error. Here is the error I was getting when trying to run or build the project.
error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
After a quick search, it seems that libtinfo.so.5 is related to the ncurses5 library and needs to be installed. openSUSE Tumbleweed has ncurses6 installed by default. A quick search with zypper displays both installed and available packages.
$ zypper search ncurses
Loading repository data...
Reading installed packages...
S | Name | Summary | Type
---+-------------------------------+-------------------------------------------------------------+--------
| busybox-ncurses-utils | Busybox applets replacing ncurses-utils | package
| gambas3-gb-ncurses | The ncurses component for Gambas | package
| libncurses5 | Terminal control library | package
| libncurses5-32bit | Terminal control library | package
i | libncurses6 | Terminal control library | package
i | libncurses6-32bit | Terminal control library | package
| libyui-ncurses-devel | Libyui-ncurses header files | package
| libyui-ncurses-doc | Libyui-ncurses documentation | package
| libyui-ncurses-pkg-devel | Libyui-ncurses-pkg header files | package
| libyui-ncurses-pkg-doc | Libyui-ncurses-pkg documentation | package
i | libyui-ncurses-pkg14 | Libyui - yast2 package selector widget for the ncurses UI | package
| libyui-ncurses-rest-api-devel | Libyui header files | package
| libyui-ncurses-rest-api14 | Libyui - The REST API plugin for the Ncurses frontend | package
| libyui-ncurses-tools | Libyui-ncurses tools | package
i | libyui-ncurses14 | Libyui - Character Based User Interface | package
i | ncurses-devel | Development files for the ncurses6 terminal control library | package
| ncurses-devel-32bit | Development files for the ncurses6 terminal control library | package
| ncurses-devel-static | Static libraries for the ncurses6 terminal control library | package
i | ncurses-utils | Tools using the new curses libraries | package
| ncurses5-devel | Development files for the ncurses5 terminal control library | package
| ncurses5-devel-32bit | Development files for the ncurses5 terminal control library | package
| ncurses5-devel-static | Static libraries for the ncurses5 terminal control library | package
I decided that I would install the ncurses5-devel package to be on the safe side.
$ sudo zypper install ncurses5-devel
Loading repository data...
Reading installed packages...
Resolving package dependencies...
The following 2 NEW packages are going to be installed:
libncurses5 ncurses5-devel
2 new packages to install.
After that completed, a quick run of the Kotlin app in IntelliJ produced the following.
BUILD SUCCESSFUL in 158ms
1 actionable task: 1 executed
> Task :compileKotlinNative UP-TO-DATE
> Task :linkDebugExecutableNative
> Task :runDebugExecutableNative
Hello, Kotlin/Native!
That’s it, a missing library that was thankfully easy to install. I hope this helps someone else that runs into this issue.
Thanks for reading,
Jamie
If you enjoy the content, then consider buying me a coffee.