# GCC-4.4 doesn't exist under /usr/ports



## Mohammad Al-Amleh (Jul 17, 2016)

Hello All,
I am new to FreeBSD and I was trying to build a mellanox product. The product requires GLIBCXX.3.4.11. After some search on the internet, I found that I need to install gcc-4.4. 


I seached for port under /usr/ports and I didn't find this version. I fetched and updated the FreeBSD ports tree using portsnap. But still can't find it. 

Any thought will be appreciated. 


Best,
Mohammad.


----------



## marino (Jul 17, 2016)

I confirm that gcc44 isn't in the ports tree and hasn't been in years (like 5 years?).
I find it suspicious that a modern product would require specifically gcc 4.4 and nothing newer.   That doesn't sound logical to me.  GCC 4.4 has been EOL by GNU for many years as well.


----------



## Mohammad Al-Amleh (Jul 17, 2016)

I agree that it is weird. But that is what I have.


----------



## asteriskRoss (Jul 17, 2016)

You could try using the last version of the lang/gcc44 port with the current ports tree but it may require some modification to work correctly (the FreeBSD Porter's Handbook may be helpful if this is the path you want to take).

It would also be possible to compile and install GCC 4.4 outside of FreeBSD's port and package management framework.  Thread 29786 has some instructions for compiling GCC 4.6 from sources that you could adapt for GCC 4.4.


----------



## marino (Jul 17, 2016)

not "may require", but rather "will require" and it will likely be a lot of modification to use an ancient port.

I am not seeing how "GLIBCXX.3.4.11" equals gcc 4.4.  I'd start by questioning that assertion.  Aren't these versioned libraries?  everything newer than 4.4 might have it as well.


----------



## asteriskRoss (Jul 17, 2016)

marino@ said:


> I am not seeing how "GLIBCXX.3.4.11" equals gcc 4.4.  I'd start by questioning that assertion.


Agreed.  Perhaps you should consider asking the application supplier for support since they should know how to compile their own code.

Is the application you are trying to compile designed for FreeBSD?  Perhaps it uses GNU/Linux binaries and you haven't installed the binary compatability layer (ports emulators/linux_base-c6 or emulators/linux_base-f10)?



marino@ said:


> not "may require", but rather "will require" and it will likely be a lot of modification to use an ancient port.


marino@: There is at least the maintained lang/gcc46 that could be used as a template but I agree that Mohammad Al-Amleh should check his diagnosis before pouring time into the wrong solution.


----------



## Murph (Jul 17, 2016)

Mohammad Al-Amleh, it might be useful if you told us exactly which Mellanox product you are trying to build (and perhaps give a URL to the official product's page), and the URLs which are telling you to use those versions of GLIBCXX and GCC.

It might not apply in this case, but quite often a software package saying that it needs something like "GCC 4.4" actually means "GCC 4.4 or newer".  I would be quite tempted to just try building it with the current default GCC version from ports, lang/gcc48, and see what happens.  In many cases, that will just work, as they simply need a feature which was introduced in 4.4 rather than only being compatible with 4.4.

I would certainly be trying to build it with currently supported GNU tool versions, rather than very old and obsolete versions, at least until I determined that there really was something special that needed to use obsolete tools.


----------



## SirDice (Jul 18, 2016)

Mohammad Al-Amleh said:


> The product requires GLIBCXX.3.4.11. After some search on the internet, I found that I need to install gcc-4.4.


GLIBCXX refers to a specific Linux' glibc version, not a C compiler library. FreeBSD has its own libc implementation.


----------



## tobik@ (Jul 18, 2016)

SirDice said:


> GLIBCXX refers to a specific Linux' glibc version, not a C compiler library. FreeBSD has its own libc implementation.


AFAIK it refers to the C++ ABI version i.e. what libstdc++ supports. Glibc uses GLIBC_X.X.X instead.

libstdc++ is installed by e.g. lang/gcc, which seems to have GLIBCXX_3.4.11 (`readelf -V /usr/local/lib/gcc48/libstdc++.so.6`):

```
...
  0x01a0: Rev: 1  Flags: none  Index: 13  Cnt: 2  Name: GLIBCXX_3.4.11
  0x01bc: Parent 1: GLIBCXX_3.4.10
  0x01c4: Rev: 1  Flags: none  Index: 14  Cnt: 2  Name: GLIBCXX_3.4.12
  0x01e0: Parent 1: GLIBCXX_3.4.11
...
```


----------

