QT4 Port auf amd64 als 32 Bit kompilieren

carbuncle

Rainbow Six
Hi,

ist es möglich auf einer amd64 9.1-RELEASE den qt4 Port als 32 Bit Version zu kompilieren wenn ich das in die /etc/make.conf so angebe (ich glaub CPUTYPE). Oder muss da noch mehr gemacht werden?
 
Hi,

das habe ich gefunden:

http://www.gundersen.net/32bit-jail-on-64bit-freebsd/

Wie sieht es mit X11 Programmen aus, laufen die in einer Jail? Bisher hab ich gelesen dass es ohne patchen nicht möglich ist xorg in einer Jail laufen zu lassen.

Wäre es möglich einfach in der 32 Bit jail ein X11 Programm zu starten (X11 libs müssen logischerweise da sein) und dies dann an meinen host mittels SSH zu fowarden (X Forwarding)?

Vielen Dank schonmal!
 
Wenn man sich das an tun will kann ein X11 Client grundsätzlich auch mit anderer ABI in einer Jail auf den X11 Server des Hosts zugreifen. Problematisch können dabei X Extensions, die shared Memory nutzen.
 
X Forwarding langt mir. Der Jail soll dann eigentlich nur qtcreator ausführen. Somit kann ich dann auf einer 64Bit Maschine 32-Bit QT Apps entwickeln welche auf einem PC mit Nanobsd laufen.
 
Darum gehts nicht. Mein Zieltarget ist nur 32-Bit. Das ist ein VIA Board mit einem C7. Die Anwendung ist nicht das Problem, die gibts noch garnicht :)
 
Ich glaube er meint eher, dass du die Anwendung normal auf deinem 64bit System programmierst und dann einfach in einer 32bit-Jail kompilierst.

Die "Bittigkeit" wird ja nicht dadurch entschieden, wo die Anwendung programmiert wird.
 
Stimmt, das wäre das naheliegendste. Einfach eine 32 Bit Jail installieren, den QT4 Kram aus den Ports dazupacken und dann in meinem Projektordner qmake aufrufen. Dann sollten da 32 Bit Executables rausfallen.
 
Ich wünschte Integer Datentypen wären so wohldefiniert wie Fließkomma Typen. Nur Architekturgebundene Typen wie Pointer, size_t, off_t etc. sollten meiner Meinung nach architekturabhängig sein.

Dann müssten noch type casts von architekturabhängigen zu generischen Integern noch ausschließlich explizit sein. Ich denke dann hätte es eine Menge weniger Ärger gegeben. Oder hattet ihr schon mal Ärger mit Fließkommazahlen, bei der 64bit Portierung?
 
Ich wünschte Integer Datentypen wären so wohldefiniert wie Fließkomma Typen. Nur Architekturgebundene Typen wie Pointer, size_t, off_t etc. sollten meiner Meinung nach architekturabhängig sein.

Dann müssten noch type casts von architekturabhängigen zu generischen Integern noch ausschließlich explizit sein. Ich denke dann hätte es eine Menge weniger Ärger gegeben. Oder hattet ihr schon mal Ärger mit Fließkommazahlen, bei der 64bit Portierung?

Pointer sind per Definition doch so groß wie int, oder nicht? Darauf bauen ganz viele C(++) Programme, das kann man nicht einfach ändern.
 
Pointer sind per Definition doch so groß wie int, oder nicht? Darauf bauen ganz viele C(++) Programme, das kann man nicht einfach ändern.
Ähm, nein. Int ist 32bit und long ist je nach Architektur 32 oder 64. long long ist glaube ich immer 64. Unter Windows ist das dann alles noch mal etwas anders.
 
Pointer sind per Definition doch so groß wie int, oder nicht? Darauf bauen ganz viele C(++) Programme, das kann man nicht einfach ändern.

Du hast die Wahl. Wie willst du sterben?
  • Hängen
  • Köpfen
  • Erschießen
  • Code warten, der unter dieser Annahme geschrieben wurde.
 
Zuletzt bearbeitet:
ich glaube definiert ist einfach nur dass ein int grösser als ein char sein muss. Oder steht im C Standard genau dass ein int 32bit sein soll.
 
ich glaube definiert ist einfach nur dass ein int grösser als ein char sein muss. Oder steht im C Standard genau dass ein int 32bit sein soll.
So weit ich weiß steht da ein int geht mindestens von -2147483648 bis 2147483647. Das Problem am Standard ist, dass der Minimalgrenzen festlegt. Ein Compiler könnte dann zum Beispiel entscheiden ein int hat 48bit auf Architektur X weil das dort schneller ist.
 
Nein im Standard ist ein mindest Wertebereich vorgeschrieben, der einem 16 Bit Integer im Zweierkomplement entspricht. Auf einem x86_64 mit AMD 64 Bit ABI ist char 1 Byte, short 2 Byte, int 4 Byte und long 8 Byte. Pointer sind ebenfalls 8 Byte lang wobei nur die untern 6 Byte signifikant sind und das MSB in den nicht signifikanten Bits wiederholt werden muss um Hacks zu unterbinden, die zukünftigen Erweiterungen im Weg ständen.
 
Zurück
Oben