View mode: basic / threaded / horizontal-split · Log in · Help
November 10, 2012
Binary compatibility on Linux
What's the best way to achieve binary compatibility on Linux? For 
example, if I compile an application on, say Ubuntu 12.04, it will most 
likely not run on any older versions of Ubuntu but it will run on future 
versions.

My current approach to solve this is to compile the application in the 
oldest version of Ubuntu I can find, in this case 6.x. This is starting 
to get a bit problematic:

* The integration with VirtuaBox (I'm running Ubuntu as a guest) is 
pretty bad
* DMD won't run of out of the box, I need to compile it. This is also 
making DVM basically useless
* I can't clone the dlang repositories due to having a very old version 
of git installed
* I can't compile git, I haven't investigated in why but probably due to 
the system is too old

Is there some compiler/linker flags I can use when building to make the 
executable compatibility with older versions of Linux?

Or is there a better way to solve this?

-- 
/Jacob Carlborg
November 10, 2012
Re: Binary compatibility on Linux
Am 10.11.2012 16:40, schrieb Jacob Carlborg:
> What's the best way to achieve binary compatibility on Linux? For
> example, if I compile an application on, say Ubuntu 12.04, it will most
> likely not run on any older versions of Ubuntu but it will run on future
> versions.
>
> My current approach to solve this is to compile the application in the
> oldest version of Ubuntu I can find, in this case 6.x. This is starting
> to get a bit problematic:
>
> * The integration with VirtuaBox (I'm running Ubuntu as a guest) is
> pretty bad
> * DMD won't run of out of the box, I need to compile it. This is also
> making DVM basically useless
> * I can't clone the dlang repositories due to having a very old version
> of git installed
> * I can't compile git, I haven't investigated in why but probably due to
> the system is too old
>
> Is there some compiler/linker flags I can use when building to make the
> executable compatibility with older versions of Linux?
>
> Or is there a better way to solve this?
>

I guess the right answer is to have everything compiled statically, 
especially if you need compatibility across distributions.

--
Paulo
November 10, 2012
Re: Binary compatibility on Linux
On 10 November 2012 17:39, Paulo Pinto <pjmlp@progtools.org> wrote:
> Am 10.11.2012 16:40, schrieb Jacob Carlborg:
>
>> What's the best way to achieve binary compatibility on Linux? For
>> example, if I compile an application on, say Ubuntu 12.04, it will most
>> likely not run on any older versions of Ubuntu but it will run on future
>> versions.
>>
>> My current approach to solve this is to compile the application in the
>> oldest version of Ubuntu I can find, in this case 6.x. This is starting
>> to get a bit problematic:
>>
>> * The integration with VirtuaBox (I'm running Ubuntu as a guest) is
>> pretty bad
>> * DMD won't run of out of the box, I need to compile it. This is also
>> making DVM basically useless
>> * I can't clone the dlang repositories due to having a very old version
>> of git installed
>> * I can't compile git, I haven't investigated in why but probably due to
>> the system is too old
>>
>> Is there some compiler/linker flags I can use when building to make the
>> executable compatibility with older versions of Linux?
>>
>> Or is there a better way to solve this?
>>
>
> I guess the right answer is to have everything compiled statically,
> especially if you need compatibility across distributions.
>
> --
> Paulo

Or ship the binary with it's dependencies all together as one package.

-- 
Iain Buclaw

*(p < e ? p++ : p) = (c & 0x0f) + '0';
November 10, 2012
Re: Binary compatibility on Linux
Am Sat, 10 Nov 2012 16:40:37 +0100
schrieb Jacob Carlborg <doob@me.com>:

> What's the best way to achieve binary compatibility on Linux? For 
> example, if I compile an application on, say Ubuntu 12.04, it will
> most likely not run on any older versions of Ubuntu but it will run
> on future versions.
> 
> My current approach to solve this is to compile the application in
> the oldest version of Ubuntu I can find, in this case 6.x. This is
> starting to get a bit problematic:
> 
> * The integration with VirtuaBox (I'm running Ubuntu as a guest) is 
> pretty bad
> * DMD won't run of out of the box, I need to compile it. This is also 
> making DVM basically useless
> * I can't clone the dlang repositories due to having a very old
> version of git installed
> * I can't compile git, I haven't investigated in why but probably due
> to the system is too old
> 
> Is there some compiler/linker flags I can use when building to make
> the executable compatibility with older versions of Linux?
> 
> Or is there a better way to solve this?
> 

crosstool-NG has a nice option "Oldest supported ABI" where you
can enter an old GLIBC version and the compiler will generate
executables compatible with this version (although it still uses a
recent glibc). I have no idea how this works, but that's the best
solution I have seen so far. (crosstool also has an option "Disable
symbols versioning" which completely disables versioning. quite cool).

Here are some links which might help:
http://sourceware.org/ml/libc-help/2011-04/msg00032.html
http://www.trevorpounds.com/blog/?tag=symbol-versioning
November 10, 2012
Re: Binary compatibility on Linux
On 2012-11-10 18:39, Paulo Pinto wrote:

> I guess the right answer is to have everything compiled statically,
> especially if you need compatibility across distributions.

I just read somewhere that compiling it statically will make it _less_ 
compatible than compiling it dynamically.

http://stackoverflow.com/questions/8657908/deploying-yesod-to-heroku-cant-build-statically/8658468#8658468

-- 
/Jacob Carlborg
November 10, 2012
Re: Binary compatibility on Linux
Al 10/11/12 16:40, En/na Jacob Carlborg ha escrit:
> What's the best way to achieve binary compatibility on Linux? For example, if I compile an application on, say Ubuntu 12.04, it will most likely not run on any older versions of Ubuntu but it will run on future versions.
> 
> My current approach to solve this is to compile the application in the oldest version of Ubuntu I can find, in this case 6.x. This is starting to get a bit problematic:
> 
> * The integration with VirtuaBox (I'm running Ubuntu as a guest) is pretty bad
> * DMD won't run of out of the box, I need to compile it. This is also making DVM basically useless
> * I can't clone the dlang repositories due to having a very old version of git installed
> * I can't compile git, I haven't investigated in why but probably due to the system is too old
> 
> Is there some compiler/linker flags I can use when building to make the executable compatibility with older versions of Linux?
> 
> Or is there a better way to solve this?
> 

Ubuntu 10.04.4 LTS is old enough?
You can install/run dmd out of the box on it just installing the appropriate deb package.

-- 
Jordi Sayol
November 10, 2012
Re: Binary compatibility on Linux
On 2012-11-10 19:54, Johannes Pfau wrote:

> crosstool-NG has a nice option "Oldest supported ABI" where you
> can enter an old GLIBC version and the compiler will generate
> executables compatible with this version (although it still uses a
> recent glibc). I have no idea how this works, but that's the best
> solution I have seen so far. (crosstool also has an option "Disable
> symbols versioning" which completely disables versioning. quite cool).
>
> Here are some links which might help:
> http://sourceware.org/ml/libc-help/2011-04/msg00032.html
> http://www.trevorpounds.com/blog/?tag=symbol-versioning

I got the last link from someone in the D IRC channel. I just don't know 
how to do that with D.

-- 
/Jacob Carlborg
November 10, 2012
Re: Binary compatibility on Linux
On 2012-11-10 19:49, Jordi Sayol wrote:

> Ubuntu 10.04.4 LTS is old enough?

I have no idea. I don't know how often people update their Linux systems 
and how compatible different distributions are. Sine I'm not using Linux 
as my primary platform I was hoping someone else could answer this.

What is the oldest system I need to reasonably support? I'm mostly 
talking about tools and libraries for the D community here.

-- 
/Jacob Carlborg
November 10, 2012
Re: Binary compatibility on Linux
On Sat, 10 Nov 2012 13:01:27 -0600, Jacob Carlborg <doob@me.com> wrote:

> On 2012-11-10 19:49, Jordi Sayol wrote:
>
>> Ubuntu 10.04.4 LTS is old enough?
>
> I have no idea. I don't know how often people update their Linux systems  
> and how compatible different distributions are. Sine I'm not using Linux  
> as my primary platform I was hoping someone else could answer this.
>
> What is the oldest system I need to reasonably support? I'm mostly  
> talking about tools and libraries for the D community here.
>

Oldest system to reasonably support?  I would say Debian Stable.
It is used on a lot of server systems and isn't *too* far behind/old.

If you need newer versions of packages, debian has its testing and  
experimental branches.

I don't remember if they still are, but Ubuntu used to take a snapshot of  
Debian Sid to base its packages on.
Linux Mint Debian gets its packages from debian testing I believe.

The point I'm making is that Debian is pretty much the upstream repo.  You  
can go as far as to test versions that haven't made it into Ubuntu or Mint  
yet.

If people are using older versions than Debian Stable, then you should  
probably forget about them.
Either they will cherry-pick the versions they need, or they are not  
interested in anything new and untested.

Just my two cents as an ex server admin.
November 10, 2012
Re: Binary compatibility on Linux
I would say supporting distributions which are no longer supported by
the distributions itself is of very little value. So for Ubuntu the last
still supported LTS version should be old enough.

I think virtually nobody is using anything older, especially not 06.XX!
And if they do, then they will have a whole bunch of other problems than
not being able to use your program.

Best regards,

Robert

On Sat, 2012-11-10 at 20:01 +0100, Jacob Carlborg wrote:
> On 2012-11-10 19:49, Jordi Sayol wrote:
> 
> > Ubuntu 10.04.4 LTS is old enough?
> 
> I have no idea. I don't know how often people update their Linux systems 
> and how compatible different distributions are. Sine I'm not using Linux 
> as my primary platform I was hoping someone else could answer this.
> 
> What is the oldest system I need to reasonably support? I'm mostly 
> talking about tools and libraries for the D community here.
>
« First   ‹ Prev
1 2 3 4
Top | Discussion index | About this forum | D home