GLib compile error (ffi.h), but libffi is installed - gtk

After a succesful configure, make exits with snipped
gclosure.c:29:17: fatal error: ffi.h: No such file or directory
compilation terminated.
I have libffi installed, and locate ffi.h gives:
/home/luca/gcc4.6/gcc-4.6.0/libffi/include/ffi.h.in
/usr/include/x86_64-linux-gnu/ffi.h
/usr/share/doc/ghc-doc/html/users_guide/ffi.html
/usr/share/doc/libffi5/html/Using-libffi.html

If you have a Debian-based Linux OS with apt-get:
sudo apt-get install libffi-dev
With a Redhat-base OS:
yum install libffi-devel
With Alpine Linux:
apk add libffi-dev

When compling libffi 3.0.9 from source code, the include/Makefile.in installs the includes in the ${PREFIX}/lib/libffi-3.0.9/include directory. I'm sure there's a WONDERFUL reason for that, but I'm annoyed by it.
This line fixes it, when compiling libffi:
/bin/perl -pe 's#^includesdir = .*#includesdir = \#includedir\##' -i include/Makefile.in
The includes will now be installed in ${PREFIX}/include, which is /usr/local/include for me.
My full recipe is:
cd /var/tmp
rm -rf libffi-3.0.9
untgz /usr/local/src/utils/libffi-3.0.9.tar.gz
cd libffi-3.0.9
/bin/perl -pe 's#^AM_CFLAGS = .*#AM_CFLAGS = -g#' -i Makefile.in
/bin/perl -pe 's#^includesdir = .*#includesdir = \#includedir\##' -i include/Makefile.in
./configure --prefix=/usr/local \
--includedir=/usr/local/include
gmake
gmake install

Resolved by manually setting LIBFFI_CFLAGS for location of ffi.h in configure

Check your GCC version and note this entry in the Debian Bug Archive: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=523869
It was the final solution to my particular issue (it looked exactly like what you report, but couldn't be solved with the solution above)... my problem had nothing to do with LIBFFI at all.

An old thread, but anyway...
After putting the required files in a location where they could be found, I got it working:
cp /usr/include/x86_64-linux-gnu/ffi* /usr/local/include/
cp /usr/lib/libffi.so /usr/local/lib/

Related

daq with error make: *** [Makefile:344: Makefile.in] Error 1

I learn about Snort and when I install it, I must install daq. When I implement./configure && make && sudo make install I see this warning:
cd . && /bin/bash /home/snort/snort_src/daq-2.0.7/missing automake-1.15 --foreign
/home/snort/snort_src/daq-2.0.7/missing: line 81: automake-1.15: command not found
WARNING: 'automake-1.15' is missing on your system.
You should only need it if you modified 'Makefile.am' or
'configure.ac' or m4 files included by 'configure.ac'.
The 'automake' program is part of the GNU Automake package:
http://www.gnu.org/software/automake
It also requires GNU Autoconf, GNU m4 and Perl in order to run:
http://www.gnu.org/software/autoconf
http://www.gnu.org/software/m4/
http://www.perl.org/
make: *** [Makefile:344: Makefile.in] Error 1
I installed autoconf, automake 1.16.1, imlement autoreconf -f -i before but not succeed.
Someone can help me fix it?
Since your installing daq-2.0.7, I assume you are installing snort version ~2.9.And which version of linux/unix OS your testing installation with?
If your on Centos7.7, here a list of neccessary packages
yum update -y
yum install epel-release -y
yum install gcc gcc-c++ libnetfilter_queue libnetfilter_queue-devel git flex bison zlib zlib-devel pcre pcre-devel libdnet libdnet-devel tcpdump libnghttp2 wget xz-devel lzma -y
See snort documents for more details: https://www.snort.org/documents

example.c:1:22: fatal error: postgres.h: No such file or directory

I'm trying to create my own function (using C) in postgres for which I'm referring this doc: http://www.linuxgazette.cz/139/peterson.html
For compiling - I'm referring: Section 33.9.6 . But, when I run below command:
cc -fpic -c example.c
I get this error:
example.c:1:22: fatal error: postgres.h: No such file or directory
#include "postgres.h"
^
compilation terminated.
I have also installed postgresql-server-dev-all package and tried with the solution provided in this link: How to fix 'postgres.h' file not found problem?
Nothing working for me. Please let me know how I can have postgres.h file.
I'm using postgres-12 on centos -7.
First: If you didn't install PostgreSQL from source, make sure that you installed the headers, which are in the -devel package.
If the problem persists even with the headers installed, the reason is that you forgot to tell the compiler where to look for header files:
cc -fpic -I /location/of/postgres/include -c example.c
To find that location, you can use pg_config:
pg_config --includedir
There is a similar --libdir option to show the library path for when you link the executable.
for ubuntu: apt-get -y install postgresql-server-dev-13 after apt-get -y install postgresql-13

How to fix "symbol lookup error" in a distributed binary?

I have just upgraded Linux Mint from 19.3 to 20.
I find that archive files are not opening. More specifically, file-roller is reporting an error:
root#Sala:/home/peter# /usr/bin/file-roller
/usr/bin/file-roller: symbol lookup error: /usr/bin/file-roller: undefined symbol: archive_write_add_filter_zstd
I have removed and reinstalled file-roller both using synaptic and apt --purge but the issue is not resolved.
I have posted in Linux Mint forums and there is no solution posted after more than 24 hours.
How can I fix this problem?
I ran into a similar issue on Amazon AMI that has the latest upgradable version of libarchive set at 3.1.2-14.amzn2 and I wanted to get the actual latest version of 3.5.1. I was able to resolve it with the help of http://www.linuxfromscratch.org/blfs/view/svn/general/libarchive.html:
sudo yum remove libarchive*
wget https://github.com/libarchive/libarchive/releases/download/3.5.1/libarchive-3.5.1.tar.xz
tar -xvf libarchive-3.5.1.tar.xz
cd libarchive-3.5.1
./configure --prefix=/usr --disable-static && make
sudo make install
cd .. && rm -rf libarchive-3.5.1 && rm libarchive-3.5.1.tar.xz
I was messing with this because I was trying to update CMake as well. That continued to fail because CMake is looking for libarchive in /usr/lib64 but it was installed to /usr/lib. This feels wrong. Please let me know if there is a better way to do this.
sudo cp /usr/libarchive* /usr/lib64

GPAC MP4Box ZLIB Error

I've been trying to get MP4Box installed on my CentOS 7 box using the following instructions:
...
cd extra_libs
cp -r * /usr/local/src/gpac/extra_lib
cd ..
cd gpac
chmod 755 configure
./configure
make lib
make apps
make install lib
make install
cp bin/gcc/libgpac.so /usr/lib
install -m644 bin/gcc/libgpac.so /usr/local/lib/libgpac.so
chmod +x /usr/local/lib/libgpac.so
ldconfig
Everything works fine until I get to ./configure which gives me an error:
./configure: line 354: gcc: command not found
error: zlib not found on system or in local libs
I've removed and reinstalled ZLIB and still no luck. I'm pretty new to CentOS so I'm not sure if the problem is with MP4Box or my CentOS installation. I did read that is could be a location issue, here is what I get when I run a whereis /usr/include/zlib.h /usr/share/man/man3/zlib.3.gz. Thoughts?
It turns out that gcc was not installed. I did a yum install gcc and that resolved my issue.

What's the root cause of error "Failed dependencies: /bin/sh is needed by xxx" on RHEL?

When I install a rpm package on RHEL using rpm, I got a error message just like "Failed dependencies: /bin/sh is needed by xxx".
I checked that /bin/sh is there and it links to /bin/bash and bash works well.
I found a solution that to add --nodeps to the rpm command to solve this problem. But I really want to know what is the root cause?
How to reproduce this error on a fresh install of Ubuntu 14.04.
Fresh install of Ubuntu 14.04
Do a sudo apt-get install rpm
download the nomachine rpm 64 bit linux from https://www.nomachine.com/download/download&id=4
Do a chmod +x nomachine_4.2.25_1_x86_64.rpm on it
extract it like this:
el#apollo:~Desktop$ sudo rpm -i nomachine_4.2.25_1_x86_64.rpm
rpm: RPM should not be used directly install RPM packages, use Alien instead!
rpm: However assuming you know what you are doing...
error: Failed dependencies:
/bin/sh is needed by nomachine-4.2.25-1.x86_64
So that is the error. To fix it I followed its advice to use alien.
sudo alien -i nomachine_4.2.25_1_x86_64.rpm --scripts
And no machine installed correctly.
I have find root cause for this problem. The rpm-libs is missing on my machine. I reinstall rpm-libs then everything is ok. Note: After installing rpm-libs, if the problem still exists, please try "rpm -v --rebuilddb --define="_rpmlock_path /var/lock/rpm"".
seems to me as though there is most likely a problem with your RPM database. Have you removed or modified it in any way lately? I'd start with the Fedora documentation that explains how to rebuild the database.