Jump to page: 1 24  
Page
Thread overview
Binary compatibility on Linux
Nov 10, 2012
Jacob Carlborg
Nov 10, 2012
Paulo Pinto
Nov 10, 2012
Iain Buclaw
Nov 10, 2012
Jacob Carlborg
Nov 10, 2012
Paulo Pinto
Nov 10, 2012
Johannes Pfau
Nov 10, 2012
Jacob Carlborg
Nov 10, 2012
Jordi Sayol
Nov 10, 2012
Jacob Carlborg
Nov 10, 2012
1100110
Nov 10, 2012
David Nadlinger
Nov 11, 2012
Jacob Carlborg
Nov 11, 2012
1100110
Nov 12, 2012
Jacob Carlborg
Nov 14, 2012
John Colvin
Nov 14, 2012
Jacob Carlborg
Nov 15, 2012
Thomas Koch
Nov 15, 2012
Jacob Carlborg
Nov 15, 2012
Russel Winder
Nov 15, 2012
Thomas Koch
Nov 15, 2012
Russel Winder
Nov 16, 2012
Thomas Koch
Nov 15, 2012
Jacob Carlborg
Nov 15, 2012
Russel Winder
Nov 11, 2012
Jacob Carlborg
Nov 10, 2012
Robert
Nov 10, 2012
Jacob Carlborg
Nov 10, 2012
Jordi Sayol
Nov 10, 2012
eskimo
Nov 11, 2012
Jacob Carlborg
Nov 10, 2012
Jordi Sayol
Nov 11, 2012
Thomas Koch
Nov 11, 2012
Jacob Carlborg
Nov 11, 2012
Thomas Koch
Nov 11, 2012
Nick Sabalausky
Nov 11, 2012
Russel Winder
Nov 13, 2012
Kagamin
November 10, 2012
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
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
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
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
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
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
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
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
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
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