Macports installing binutils - osx-lion

I'm trying to install gnu ld, via macports, on Lion.
I have already installed gcc 4.6 from macports. However I need to create elf binary form a binary file,
which I posted as seperate question here
I installed binutils from macports, it seems as though everything went fine, however I did get the following message at the end:
Warning: binutils installs files outside the common directory structure.
---> Installing binutils #2.21_0
---> Activating binutils #2.21_0
Having binutils installed will cause some other ports to fail to build. Consider uninstalling binutils.
---> Cleaning binutils
Looking at the list of tools that should in the binutils packages from here
I'm struggling to find any of them in the normal macports install location of /opt/local/bin
Anyone have an idea as to what I'm doing wrong?

According to this it appears as though there is no way to get gnu ld on darwin.

Related

Mac M1 Homebrew Perl Carton Net::SSLeay is loading libcrypto in an unsafe way

I'm trying to install Net::SSLeay with Carton.
The installation fails with this message
Configuring Net-SSLeay-1.90 Running Makefile.PL Do you want to run external tests?
These tests *will* *fail* if you do not have network connectivity. [n] n
*** Found LibreSSL-2.8.3 installed in /usr
*** Be sure to use the same compiler and options to compile your OpenSSL, perl, and Net::SSLeay. Mixing and matching compilers is not supported.
Checking if your kit is complete... Looks good
WARNING: /opt/homebrew/Cellar/perl/5.32.1_1/bin/perl is loading libcrypto in an unsafe way -> N/A
I've tried this with system perl, brew perl and multiple perlbrew perls.
Google came up with a temp solution to build homebrew using x86_64 architecture.
This did work for the libcrypto error, but gave me a whole different set of issues including mysql not running anymore.
Other "solutions" that I've tried are symlinking libssl & libcrypto as suggested by numerous other posts, all sadly without success.
Any ideas how to fix this or work around this without having to reinstall all brew packages as x86_64 ?
Quick Workaround
If you are looking for a quick workaround follow these steps.
Run carton bundle to create a vendor cache directory.
Go to cached tarball 'cache/authors/id/C/CH/CHRISN/' and unpack tar -xvzf Net-SSLeay-1.90.tar.gz
Edit Makefile.PL, change my $prefix = find_openssl_prefix(); to
my $prefix = '/opt/homebrew/opt/openssl#1.1'; ** adjust to your openssl location.
Save and create new tarball tar -czvf Net-SSLeay-1.90.tar.gz Net-SSLeay-1.90
Run carton install --cached to use the altered version
Hope this helps anyone in search of workaround
You can solve this in two steps:
upgrade ExtUtils::MakeMaker to at least version 7.58 (e.g. cpanm ExtUtils::MakeMaker)
install openssl via macports (sudo port install openssl) or homebrew (brew install --cask openssl)
After the Monterey update this broke again also on the x86_64 architecture, but just symlinking your latest openssl (where ever it is, depending how you have installed it) seemed to fix this. Example:
$ export OPENSSL_PREFIX=[find your openssl installation]
$ sudo ln -s $OPENSSL_PREFIX/lib/libssl.dylib /usr/local/lib/
$ sudo ln -s $OPENSSL_PREFIX/lib/libcrypto.dylib /usr/local/lib/
Better workaround:
I entered export OPENSSL_PREFIX=/opt/homebrew/opt/openssl#1.1 in my shell and then ran cpan. I checked the code in Makefile.PL and the first thing the function find_openssl_prefix does is to check the OPENSSL_PREFIX environment variable. If it is set, then it the function will return its contents.
Add the variable to your .profile, .cshrc, .bashrc, .zshrc, or whatever rc file your shell uses and you never have to worry about it again!!

Install perl module Net:SSH2 on redhat/centos 7

As the title says I am trying to install the perl module perl-Net-SSH2. I have tried via yum but get an error that no package is available.
yum install perl-Net-SSH2
I have tried by downloading an rpm file but the only one I can find is for el6 and it complains about the version of perl
yum localinstall perl-Net-SSH2-0.45-4.el6.x86_64.rpm
Requires: perl(:MODULE_COMPAT_5.10.1)
I have tried downloading the source code but get told "Unable to find a working version of library ssh2 in the following directories" even though it is installed. (via yum install libssh2 libssh2-devel)
I have tried via cpan but get the same error "Unable to find a working version of library ssh2 in the following directories"
Any ideas? Google is very sketchy on this and only
OK, I solved this while writing the question. Seeing as information on this is limited I thought it would be worth posting the question anyway. The error message was giving the wrong information in that it was actually gcc that was missing, not libssh2. These are the steps I followed. I've tried to make it as verbatim as possible. I have not verified all these modules are required but this is what I installed before compiling it.
yum install libssh2 libssh2-devel
yum install openssl openssl-devel
yum install perl-Net-SSLeay
yum install gcc
Search for Net::SSH2 in google
Click the link "Net::SSH2 - search.cpan.org"
Download source code (tar.gz file)
Copy it to your redhat 7 machine
tar -xvf Net-SSH2-0.62.tar.gz
cd Net-SSH2-x.xx
perl Makefile.PL
make
make install
Should all be working now, test it with
perl -e 'use Net::SSH2;'

Which missing library results in the message '/usr/bin/ld: cannot find -lglib-2.0'?

I am cross compiling a Lazarus program, creating a 32bit program on a 64bit Ubuntu 14.04 Trusty Tahr system, and everything apparently compiles to the very end when I get this messsage
/usr/bin/ld: cannot find -lglib-2.0
What is the full name of the library whose absence results in this error mesage?
libc6-dev:i386 appears to be the most likely library, but when I try to install it with apt indicates build-essential g++ gcc gcc-multilib will be removed so I abort it.
sudo apt-get install libc6-dev:i386
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
linux-libc-dev linux-libc-dev:i386
Suggested packages:
glibc-doc:i386 manpages-dev:i386
Recommended packages:
gcc:i386 c-compiler:i386
The following packages will be REMOVED
build-essential g++ gcc gcc-multilib
The following NEW packages will be installed
libc6-dev:i386 linux-libc-dev:i386
The following packages will be upgraded:
linux-libc-dev
1 to upgrade, 2 to newly install, 4 to remove and 18 not to upgrade.
Need to get 3,126 kB of archives.
After this operation, 12.6 MB of additional disk space will be used.
Do you want to continue? [Y/n]
It turns out it was the libglib2.0-0:i386 package. It was already installed earlier, but it had not been fully configured.
It was present in the /lib/i386-linux directory and I had to create a symlink to it include it to the fpc.cfg configuration file used by Free Pascal.
locate libglib | grep ^/lib produced:
/lib/i386-linux-gnu/libglib-2.0.so.0
/lib/i386-linux-gnu/libglib-2.0.so.0.4002.0
/lib/x86_64-linux-gnu/libglib-2.0.so.0
/lib/x86_64-linux-gnu/libglib-2.0.so.0.4002.0
I symlinked it with the expected name:
ln -s /lib/i386-linux-gnu/libglib-2.0.so.0 /lib/i386-linux-gnu/libglib-2.0.so
then added to the Lazarus installations fpc.cfg file
#ifdef cpui386
-Fl/usr/lib32
-Fl/lib/i386-linux-gnu
#endif

gcc required when installing Bugzilla on diskstation

I'm trying to install Bugzilla but encounter a Perl problem.
When installing required Perl modules, I get the following error message:
ERROR: Using install-module.pl requires that you install a compiler, such as gcc.
gcc 4.2.3 is installed and in the path. I'm using perl v 5.8.6 OS: Linux DiskStation 2.6.32.12
Another thread on Stackoverflow refers to PerlGcc but it seems to work on Solaris only.
How can I make Perl find gcc?
I'm guessing you're talking about this thread. Assuming that the guy talking about the version of gcc being relevant was onto something, could you check that you don't have an older version of gcc lying around somewhere higher in the path with
$ which gcc

Cannot find gtkmm.h

I have been asked to port a Linux C++ application to 64-bit RedHat 6.2. Instructions for buildling the application indicate that GTK+ (gtkmm24-2.8.0 or greater) and GLADE (libglademm24-2.6.1 or greater) are required. I successfully ran: aclocal, automake and ./configure but when I run make, I get:
error: gtkmm.h No such file or directory
I could not find gtkmm.h anywhere in the file system. I used yum to search for gtkmm and it found gtkmm24.x86_64 which I installed but it did not install gtkmm.h. Does anyone know how I can get the header files for gtkmm for 64-bit RedHat 6.2?
Install gtkmm24-devel. After that you'll be able to use
pkg-config --cflags gtkmm-2.4
to get the list of include directories needed for using gtkmm.