This is a cross compilation toolchain for i686-pc-os2-emx target.
This consists of binutils, gcc, LIBCn, meson, CMake, libtool, and some build tools.
binutilsis v2.44 from https://github.com/psmedley/binutils-os2gccis v15.2.0 from https://github.com/psmedley/gcc-os2LIBCnis v0.1.14 from https://github.com/bitwiseworks/libcmesonis v1.11.1 from https://github.com/mesonbuild/mesonCMakeis v3.31.7 from https://github.com/bitwiseworks/cmake-os2libtoolis v2.5.4 from https://github.com/komh/libtool-os2
Tested hosts:
- x86_64-unknown-linux-gnu
- x86_64-apple-darwin
- aarch64-apple-darwin
-
cross-os2emx v1.3.1 (2026/06/20)
- Fixed
c_argsandcpp_argsofmesonis in[properties]section not in[built-in options]section.
- Fixed
-
cross-os2emx v1.3.0 (2026/06/19)
- Added
-Zsymsupport toemxbindandld - Added include path for
os2tk45to the cross files ofmesonandCMake - Added
setemxenvscript to help to set env vars forcross-os2emx- Use
source setemxenvor use alias for this
- Use
- Added
mesonv1.11.1 - macOS: Added
lxlitestub - macOS: Updated
kdllar - Fixed
emxbind -scommand andstripcommand for aout binaries - Linux: Fixed
kmapsymdoes not recognizeAddress Export Aliasblock
- Added
-
cross-os2emx v1.2.0 (2026/05/26)
- Added macOS support by @josch1710
- Added
lxLitev1.3.9 andkmapsymfor Linux - Added
__declspec(dllexport)support to the aout linker,ldandemxbind - Updated
kdllarto v1.4.0 - Updated the executables in
extrasto statically linked versions - Fixed
-Zomf -Zsymsdoes not generate.symfile. Issue #8 - Fixed
Unix Makefilesgenerator ofCMakefails compile tests. Issue #12 - Fixed
kdllarfails on macOS due to__.SYMDEF. Issue #28 - Fixed
emxbinddoes not recognize a.out files with old-EMX startup code. Issue #30 - Fixed misc.
-
cross-os2emx v1.1.1 (2026/04/02)
- Added
_envargs()support- Now
EMXOMFOPTfor emxomf,EMXOMFSTRIPOPTfor emxomfstrip,GASOPTfor as, andGCCOPTfor gcc are supported.
- Now
- Updated
kdllarto support response files - Fixed misc.
- Added
-
cross-os2emx v1.1.0 (2026/03/29)
- Updated
binutilsto v2.44 - Updated
gccto v15.2.0 - Added
libtoolv2.5.4 - Added response file support to emx tools
- Fixed
emxaoutfails on OMF object files generated by cross-os2emx. Issue #7 - Fixed build problems due to
autotools.- Now
autoconfv2.69,automakev1.18.1, andlibtoolv2.5.4 are built and used internally
- Now
- Fixed the sources including
fenv.hin C++ could not be linked - Fixed misc.
- Updated
-
cross-os2emx v1.0.0 (2026/03/15)
- Renamed to
cross-os2emx - Added 64-bit version of
wlandwrc - Added
kdllarv1.3.0,nasmv3.01,ninjav1.13.1, andcmakev3.31.7 - Added shared
libgccandlibstdc++-v3 - Added
libssp - Added cross build definition files for
Meson(i686-pc-os2-emx-aout.txt for aout, and i686-pc-os2-emx-omf.txt for omf in /path/to/opt/os2emx/share/meson/cross) - Added a basic cross file for
CMake(i686-pc-os2-emx.cmake in /path/to/opt/os2emx/share/cmake/cross) - Added
installrpmzipto install additional libs from netlabs rpm server - Fixed bashism. Issue #4. Reported by Dave Yeo
- Fixed ICE due to
__declspec(dllexport). Issue #9 - Fixed misc.
- Renamed to
-
os2emx-cross-toolchain-b1 (2026/02/23)
- Released at
github
- Released at
-
os2emx-cross-toolchain-test2 (2026/02/19)
- Added
emxomf,emxomfar,emxomfld,emxomfstrip,listomfandstripomfemxomfldsupports onlyWLINK
- Added
-Zomfoption with watcom tools such aswlinkandwrc - Fixed symbolic link problems
- Added
-
os2emx-cross-toolchain-test1 (2026/02/15)
- Added
binutilsv2.33.1 - Added
emxexp,emximp,emxbindand OS/2ld - Added
gccv9.2.0- Always link to
libgcc.a
- Always link to
- Added
Here are the examples.
- Set env vars for cross-os2emx
You should set env vars such as PATH for cross-os2emx like:
. setemxenv
- autotools
./configure --host=i686-pc-os2-emx
- meson
For aout:
meson setup build_dir -Dos2_emxomf=false --cross-file=$HOME/opt/os2emx/share/meson/cross/i686-pc-os2-emx-aout.txt
You can omit -Dos2_emxomf=false for aout.
For omf:
meson setup build_dir -Dos2_emxomf=true --cross-file=$HOME/opt/os2emx/share/meson/cross/i686-pc-os2-emx-omf.txt
- CMake
cmake -S . -B build_dir -DCMAKE_TOOLCHAIN_FILE=$HOME/opt/os2emx/share/cmake/cross/i686-pc-os2-emx.cmake
- Others
export CC=i686-pc-os2-emx-gcc
export CXX=i686-pc-os2-emx-g++
export AR=i686-pc-os2-emx-ar
export STRIP=i686-pc-os2-emx-strip
and so on
If you use -Zomf to compile sources not to link, then you should set AR to i686-pc-os2-emx-emxomfar like:
export AR=i686-pc-os2-emx-emxomfar
NOTE: You should modify the path to/in the above files to the proper ones according to your system env.
-
Find the necessary libs at https://rpm.netlabs.org/release/00/zip
-
Copy the package name including
.zipnot the URL -
Execute
installrpmzipwith the package name. For example, if you want to install pthread:
/path/to/opt/os2emx/bin/installrpmzip pthread-0_2_6-1_oc00.zip
-
Clone the sources from github:
git clone https://github.com/komh/cross-os2emx.git -
Bootstrap:
./bootstrap -
Build:
make -
Install:
make installThis will install the built files into
$HOME/opt/os2emx.
- NOTE 1: Some tools and libs such as
gettext,autopoint,textinfo,flex,bison, and so on are required bybinutilsandgcc. - NOTE 2:
libsslandlibcryptoofopensslare required byCMake. - NOTE 3:
wget,tar, andunzipare required to download and to extractautotoolsandLIBCnbinaries. - NOTE 4: Unless you set
PREFIXROOT,PREFIXROOTis set to$HOMEby default. If you want to set PREFIXROOT to other directory than $HOME. then you should set PREFIXROOT to the same value WHENEVER calling make. For example,
make PREFIXROOT=/
make install PREFIXROOT=/
This will install into $PREFIXROOT/opt/os2emx.
- Some .so files are missing in pre-built binaries such as
libiconv.so.2andlibmpfr.so.4and so on. For this, see #2.
If you are satisfied with this program and want to donate to me, please visit the following URL.
https://www.os2.kr/komh/os2factory/
Or, please click the Ads in the following blog.
Please use the issue tracker of github:
https://github.com/komh/cross-os2emx/issues
KO Myung-Hun