# FreeBSD amd64



## Pushrod (Mar 3, 2011)

I have a system with an amd64 processor. Does the amd64 FreeBSD version support all 32-bit apps without issue? Can a binary built on i386 run on amd64?

In other words, is there any reason to stick with i386 in this case?


----------



## sk8harddiefast (Mar 3, 2011)

> I have a system with an amd64 processor. Does the amd64 FreeBSD version support all 32-bit apps without issue?


There are some ports that they can be build only for i386, or you will see on flags that some options are only for i386. But all this is a very  small part on ports. But general you will have no problem. Me too amd64 arch I use for my desktop and everything is running well 


> Can a binary built on i386 run on amd64?


Not sure but if the answer on this question is yes, then we solve the "problem" of the first question 


> In other words, is there any reason to stick with i386 in this case?


The only reason that I see to stay on i386, is if you run a specific program that runs only on i386, the answer on the second question is no and you can not work with alternative tool except this. For all the othes, go to amd64


----------



## qsecofr (Mar 4, 2011)

*and NFS?*

I saw a while back a recommendation to scan the ports tree for 

```
grep -R ONLY_FOR_ARCHS /usr/ports/*
```
Something like that.  It may give insight into which ports will or will not run on amd64.

I'd like to add a question: if the NFS server is i386, can the NFS client be amd64?  (or vice-versa even)


----------



## jnbek (Mar 4, 2011)

qsecofr said:
			
		

> I'd like to add a question: if the NFS server is i386, can the NFS client be amd64?  (or vice-versa even)


Yes, this should be just fine either way


----------



## Terry_Kennedy (Mar 8, 2011)

Pushrod said:
			
		

> I have a system with an amd64 processor. Does the amd64 FreeBSD version support all 32-bit apps without issue? Can a binary built on i386 run on amd64?


As long as you have COMPAT_FREEBSD32 defined in your kernel config, i386 FreeBSD binaries should work. Note that this option name is somewhat confusing, since all of the other COMPAT_FREEBSD* options are for compatibility with different FreeBSD releases, not architectures.

Not all ports will build on amd64 - you might need to use the pre-built package instead.

For building your own sources, adding 
	
	



```
-m32 -DCOMPAT_32BIT -L/usr/lib32 -B/usr/lib32
```
 to your *cc* command line might enable you to compile and link an i386 binary on an amd64 system. It has worked for me on a multiple-100K-line source project that I've been dragging around with me since Berkeley 4.2 on a VAX.

Before I convinced a software vendor to create a native FreeBSD version of their app, I used their Linux version which was a mismash of Linux i386 binaries and Java code, and that also worked on FreeBSD amd64.


----------



## Pushrod (Mar 9, 2011)

Any disadvantages? Does memory use change much on amd64? In Win64, memory usage is significantly higher than with Win32.


----------



## disi (Mar 9, 2011)

Every byte of not used memory is wasted memory 

You have to have 64 and 32 libs, so you need more disk space...


----------



## oliverh (Mar 9, 2011)

Pushrod said:
			
		

> Any disadvantages? Does memory use change much on amd64? In Win64, memory usage is significantly higher than with Win32.



If you're using anything beyond 3GB of memory then it is a must. You gain almost nothing if you're just looking for performance.


----------

