I am trying Mx toolkit demo code on this page but I get following error:
$ valac --pkg mx-1.0 mxgui.vala
mxgui.vala:4.7-4.8: error: The namespace name `Mx' could not be found
using Mx;
^^
Compilation failed: 1 error(s), 0 warning(s)
I have following clutter packages installed on my Debian Stable Linux system:
$ apt search clutter | grep installed
gir1.2-clutter-1.0/stable,now 1.26.4+dfsg-2 amd64 [installed]
gir1.2-cogl-1.0/stable,now 1.22.8-2 amd64 [installed,automatic]
gir1.2-coglpango-1.0/stable,now 1.22.8-2 amd64 [installed,automatic]
gir1.2-gtkclutter-1.0/stable,now 1.8.4-4 amd64 [installed]
libclutter-1.0-0/stable,now 1.26.4+dfsg-2 amd64 [installed]
libclutter-1.0-common/stable,stable,now 1.26.4+dfsg-2 all [installed,automatic]
libclutter-1.0-dev/stable,now 1.26.4+dfsg-2 amd64 [installed]
libclutter-gtk-1.0-0/stable,now 1.8.4-4 amd64 [installed]
libclutter-gtk-1.0-dev/stable,now 1.8.4-4 amd64 [installed]
libxkbcommon-dev/stable,now 1.0.3-2 amd64 [installed,automatic]
libxkbcommon0/stable,now 1.0.3-2 amd64 [installed,automatic]
Where is the problem and how can it be solved?
Mx is not developed any more, and Clutter has been archived in early 2022 after being in deep maintenance mode since 2016.
You should not use Mx or Clutter in newly written code. The recommendation is to use GTK4.
If it's not finding the namespace then the VAPI file for the library is not being found, it's probably not installed.
The MX Toolkit library can generate a VAPI, read this commit. It may be your distribution doesn't package it or you need to install the relevant package.
Related
I installed FreeBSD 12.2 on my server with an amd64 kernel. I tried to compile my source which was created for an i386 system. And I get this error:
skipping incompatible /usr/local/lib/gcc9/gcc/x86_64-portbld-freebsd12.3/9.5.0/../../../libstdc++.a when searching for -lstdc++
I thought its beacuse I need the shared i386 lib libaries and I was searching how to install them. Just have found to install it over "bsdinstall" which doesnt work on my root or to unpack a .tgz file which isnt in my system either.
1.You have to check if your package (lang/gcc9) was compiled with the option multilib=ON using pkg info gcc9 and see in the Options section. If not, you have to do this from the ports tree /usr/ports/lang/gcc9 :
$ sudo make config
(set 'Multilib' option to ON)
$ sudo make
$ sudo make install clean
or as root (one shot, as you wish ...):
# make config install clean
FYI, FreeBSD has 32bits support by default, see /usr/lib32 and do not forget to check if you include this directory when building your project.
Some infos:
on the package : FreshPorts - lang/gcc9
How to Install Applications: Chapter 4 - Installing Applications Packages and Ports
Plz Check/read these docs before proceeding.
2.If you have installed/compiled gcc9 with multilib option set to ON, troubles come from your environment (IDE, missing paths from the compiler options, etc...).
EDIT: just checking my own compiler, I forgot to mention gcc/g++ could report whether it was compiled with multilib support or not, using the preproc builtins information (see --enable-multilib below), you could use the following eg:
$ g++ -m32 -E -P -v -dD
Using built-in specs.
COLLECT_GCC=g++
Target: x86_64-portbld-freebsd13.0
Configured with: /wrkdirs/usr/ports/lang/gcc11/work/gcc-11.3.0/configure --enable-multilib --with-build-config=bootstrap-lto-noplugin --disable-nls --enable-gnu-indirect-function --enable-host-shared --enable-plugin --libdir=/usr/local/lib/gcc11 --libexecdir=/usr/local/libexec/gcc11 --program-suffix=11 --with-as=/usr/local/bin/as --with-gmp=/usr/local --with-gxx-include-dir=/usr/local/lib/gcc11/include/c++/ --with-ld=/usr/local/bin/ld --with-pkgversion='FreeBSD Ports Collection' --with-system-zlib --without-zstd --enable-languages=c,c++,objc,fortran,jit --prefix=/usr/local --localstatedir=/var --mandir=/usr/local/man --infodir=/usr/local/share/info/gcc11 --build=x86_64-portbld-freebsd13.0
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 11.3.0 (FreeBSD Ports Collection)
I can't run the executable file because of the libz.so.1 library.
I have the libz.so.1 file in file path /usr/lib/x86-64-linux-gnu/libz.so.1, but the error appears. How can I do to solve this? This is the output of the terminal.
aruvi#iris:Desktop/Final_iRTC_witout_ACM_model$ ./main_iRTC_init
./main_iRTC_init: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
The executable file was compiled for 32 bit environment but now the platform is changed to the 64 bit version. please suggest and guide me to solve the problem.
If your application is compiled for i386 (aka x86, or ia32), then all it's dylib dependencies must be i386 as well (or more generally: all dylib dependencies must be satisfied by the same architecture).
You can install (and run) i386 binaries/packages/dependencies on your Debian system by enabling multiarch:
dpkg --add-architecture i386
apt-get update
apt-get install zlib1g:i386
I am trying to put this https://github.com/zhelnio/schoolRISCV on vm Linux primary2 5.4.0-113-generic #127-Ubuntu SMP Wed May 18 14:34:18 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux.
There is a line like this in the makefile:
sudo dpkg --add-architecture i386
I end up with a similar thing:
E: Failed to fetch http://ports.ubuntu.com/ubuntu-ports/dists/focal/main/binary-i386/Packages 404 Not Found [IP: 185.125.190.39 80]
I read the article from here https://stackoverflow.com/questions/30316812/ubuntu-apt-get-unable-to-fetch-packages , but it didn't help as I don't see anything like this http://us.archive.ubuntu.com/ubuntu/
Is there any combination of GOARCH and GOOS values which I can set in order to build ELF 32-bit binary?
GOOS=linux and GOARCH=386.
More examples: architecture:
32-bit -> GOARCH=386
64-bit -> GOARCH=amd64
OS:
Windows -> GOOS=windows
Linux -> GOOS=linux
OS X -> GOOS=darwin
FreeBSD -> GOOS=freebsd
For the complete list (valid "individual" values) refer to go/build/syslist.go file:
const goosList = "android darwin dragonfly freebsd linux nacl netbsd openbsd plan9 solaris windows "
const goarchList = "386 amd64 amd64p32 arm armbe arm64 arm64be ppc64 ppc64le mips mipsle mips64 mips64le mips64p32 mips64p32le ppc s390 s390x sparc sparc64 "
Note that the above list is an ever-growing list, platforms not supported anymore are not removed (as that list is used for go/build filename matching).
For the current list all supported platforms (GOOS/GOARCH combinations), use the following command:
go tool dist list
The valid combinations of GOOS + GOARCH (source):
$GOOS $GOARCH
darwin 386
darwin amd64
darwin arm
darwin arm64
dragonfly amd64
freebsd 386
freebsd amd64
freebsd arm
linux 386
linux amd64
linux arm
linux arm64
linux ppc64
linux ppc64le
linux mips64
linux mips64le
netbsd 386
netbsd amd64
netbsd arm
openbsd 386
openbsd amd64
openbsd arm
plan9 386
plan9 amd64
solaris amd64
windows 386
windows amd64
I'm installing the last version of MediainfoDLL on Fedora 8/9 64bits (http://mediainfo.sourceforge.net/es/Download/Fedora).
I downloaded libmediainfo-0.7.20 and libzen0-0.4.3 files.
When I tried to install libzen0 I get this output:
# rpm -i libzen0-0.4.3-1.x86_64.Fedora_9.rpm
warning: libzen0-0.4.3-1.x86_64.Fedora_9.rpm: Header V3 DSA signature: NOKEY, key ID dfb2ef23
error: Failed dependencies:
libstdc++.so.6(GLIBCXX_3.4.9)(64bit) is needed by libzen0-0.4.3-3.1.x86_64
But the problem is that I have already installed the 4.1.2 version of libstdc++:
# yum list libstdc++
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* updates-newkey: kdeforge.unl.edu
* fedora: kdeforge.unl.edu
* updates: kdeforge.unl.edu
Installed Packages
libstdc++.i386 4.1.2-33 installed
libstdc++.x86_64 4.1.2-33 installed
How can I solve this problem?
Edit:
# rpm -q --provides libstdc++
libstdc++.so.6()(64bit)
libstdc++.so.6(CXXABI_1.3)(64bit)
libstdc++.so.6(CXXABI_1.3.1)(64bit)
libstdc++.so.6(GLIBCXX_3.4)(64bit)
libstdc++.so.6(GLIBCXX_3.4.1)(64bit)
libstdc++.so.6(GLIBCXX_3.4.2)(64bit)
libstdc++.so.6(GLIBCXX_3.4.3)(64bit)
libstdc++.so.6(GLIBCXX_3.4.4)(64bit)
libstdc++.so.6(GLIBCXX_3.4.5)(64bit)
libstdc++.so.6(GLIBCXX_3.4.6)(64bit)
libstdc++.so.6(GLIBCXX_3.4.7)(64bit)
libstdc++.so.6(GLIBCXX_3.4.8)(64bit)
libstdc++ = 4.1.2-33
libstdc++.so.6
libstdc++.so.6(CXXABI_1.3)
libstdc++.so.6(CXXABI_1.3.1)
libstdc++.so.6(GLIBCXX_3.4)
libstdc++.so.6(GLIBCXX_3.4.1)
libstdc++.so.6(GLIBCXX_3.4.2)
libstdc++.so.6(GLIBCXX_3.4.3)
libstdc++.so.6(GLIBCXX_3.4.4)
libstdc++.so.6(GLIBCXX_3.4.5)
libstdc++.so.6(GLIBCXX_3.4.6)
libstdc++.so.6(GLIBCXX_3.4.7)
libstdc++.so.6(GLIBCXX_3.4.8)
libstdc++ = 4.1.2-33
Interestingly I see a virtually identical output from rpm -q --provides libstdc++. I suspect that the libzen0 RPM you are using has been compiled against a version of libstdc++ which doesn't actually ship on your OS.
Are you installing the correct version of libzen0 for your OS? If so; try installing the RPM for a similar OS - e.g. the libzen0 for RHEL 5.3?
While I have no experience with 64bit systems it looks like an issue with the rpm: on my system (Fedora 8) I get the following:
$ rpm -q --provides libstdc++
libstdc++.so.6
libstdc++.so.6(CXXABI_1.3)
libstdc++.so.6(CXXABI_1.3.1)
libstdc++.so.6(GLIBCXX_3.4)
libstdc++.so.6(GLIBCXX_3.4.1)
libstdc++.so.6(GLIBCXX_3.4.2)
libstdc++.so.6(GLIBCXX_3.4.3)
libstdc++.so.6(GLIBCXX_3.4.4)
libstdc++.so.6(GLIBCXX_3.4.5)
libstdc++.so.6(GLIBCXX_3.4.6)
libstdc++.so.6(GLIBCXX_3.4.7)
libstdc++.so.6(GLIBCXX_3.4.8)
libstdc++ = 4.1.2-33
So if your libstdc++ does not provide GLIBCXX_3.4.9 like mine I'd consider the rpm broken. One solution would be to create a fake rpm that requires libstdc++ and provides GLIBCXX_3.4.9, though the proper solution would be to fix the rpm itself.