Introduction
Why use a framework?
Download
Vision API stability Code optimization Bibliography
Features Object messaging Extensibility Drag-and-Drop Networking 3D Graphics Powerful tables Styled text editor Memory leak debugger Tutorial Class tree Open protocols Known bugs Next release Future plans Projects
Tutorial
Known bugs
Next release
FAQ
Other software
Log in
There are separate web pages explaining how to use UNIX make and fdesign.
If you have a question that isn't answered here, please ask us. General problems Can I get a pre-compiled version of JX? No. We gave up trying to distribute binaries a long time ago. Everybody has a different version of the compiler and/or the required system libraries, so it causes more problems than it solves. How do I set environment variables? At the command line type: echo $SHELL This will tell you if you are using /bin/tcsh or /bin/bash as your shell. If you are using /bin/tcsh: setenv VARIABLE VALUE If you append this to the file ~/.cshrc, the variable will be set automatically every time you log in. If you are using /bin/bash: export VARIABLE=VALUE If you append this to the file ~/.bashrc, the variable will be set automatically every time you log in. makemake hangs. How do I fix this? Run it from the shell, not from another program (e.g. Midnight Commander). Or you can patch it by appending the following arguments to the call to JProcess::Create(): "kJIgnoreConnection, NULL, kJTossOutput, NULL, kJAttachToFromFD, NULL" It gives me the error: "'touch' has both : and :: entries." How do I fix this? Remove all old copies of makemake from your system. Why does it complain that it can't find the ACE header files? You need to set the environment variable ACE_ROOT, as explained in the instructions printed when you run make in the top level directory. Why does it complain that it can't find Xlib.h? You need to create a symbolic link /usr/include/X11 that points to the directory containing the X11 header files on your system. This is often /usr/X11R6/include. If you do not have root access and your system administrator doesn't want to create the link, then uncomment J_X11_INCLUDE_DIR and set it to point to the directory containing the X11 header files. When I compile with gcc 2.95, I get lots of errors. How do I fix this? Add -fpermissive to J_RAW_SYSTEM_STUFF in include/make/jx_config. When I compile, I get warnings about implicit declarations of functions in ACE header files. How do I fix this? Comment out J_DIE_ON_WARNING in include/make/jx_config. When I compile, I get an error "undefined reference to `CMSG_DATA'". How do I get around this? Uncomment J_FORCE_ACE_STATIC in include/make/jx_config. Then delete ACE/ACE_wrappers/ace/libACE.so and run make again. Please notify us so we can update the configuration for your system. When I link, it complains that it can't find libXpm. How do I fix this? Uncomment JX_INCLUDE_LIBXPM in include/make/jx_config. How do I avoid stripping the shared libraries? Change J_STRIP_DEBUG to "echo" in include/make/jx_config. How do I avoid installing the binaries when I build? Run "make J_WANT_INSTALL=0 target" Bug fixes Fix the definition of the delete macro in jNew.h to use a comma instead of a semicolon. ACE Do I have to use the version of ACE included with JX? No. JX uses only the elementary functionality provided by ACE, and since this is very unlikely to change, you can safely use newer versions. AIX AIX has known problems with shared libraries. If you compile with optimization, you will get core dumps. If you build static libraries or compile without optimization, you should not have any problems. FreeBSD On FreeBSD 2.2.x, I have trouble with ACE. How do I fix this? Uncomment ACE_HAS_SIGINFO_T and ACE_HAS_SIGWAIT in ACE/ACE_wrappers/ace/config-freebsd.h HPUX I get ACE errors when compiling JX. How do I fix this? Add -DACE_HAS_THREADS to J_RAW_SYSTEM_STUFF in include/make/jx_config. IRIX Patch for IRIX 5.3 when using g++ 2.8.1: Add #define ACE_HAS_DIRENT to ACE/ACE_wrappers/ace/config-irix5.3-g++.h. Slackware (Linux) I get a ton of errors when compiling ACE on old versions of Slackware. How do I fix this? This is due to errors in the system header files. You can try to uncomment the line defining ACE_LACKS_MADVISE in ACE/ACE_wrappers/ace/config-linux-common.h. If this doesn't work, then we do not know of any way to fix the problem other than switching to a different Linux distribution. Solaris It complains "/usr/ucb/cc: language optional software package not installed" How do I fix this? This means that Sun Microsystems didn't even give you a plain C compiler as part of your UNIX installation. Your options are: Install the cc/CC package from Sun. Try the g++ build target instead. (Installing gcc/g++ doesn't cost money!) You may also need to include "CC=gcc" as part of the make command. It complains about missing return value specifications for most of the Xlib functions. How do I fix this? Add -fpermissive or -Wno-return-type to J_RAW_SYSTEM_STUFF in include/make/jx_config. Then tell your system administrator to pester the X Consortium to release a cleaner Xlib distribution. You can apparently also simply use the Xlib.h and Xutil.h files provided by XFree86, at least on SunOS 5.7. It refuses to build the shared libraries. How do I fix this? Change J_SHARED_LIB_LINK_OPTION to -shared or -G in include/make/jx_config. It refuses to strip the shared libraries. How do I fix this? Change J_STRIP_DEBUG to "strip -x" in include/make/jx_config. Makemake fails because it can't find libucb.so. How do I fix this? Add /usr/ucblib to your LD_LIBRARY_PATH environment variable.
No. We gave up trying to distribute binaries a long time ago. Everybody has a different version of the compiler and/or the required system libraries, so it causes more problems than it solves.
At the command line type: echo $SHELL This will tell you if you are using /bin/tcsh or /bin/bash as your shell. If you are using /bin/tcsh: setenv VARIABLE VALUE If you append this to the file ~/.cshrc, the variable will be set automatically every time you log in. If you are using /bin/bash: export VARIABLE=VALUE If you append this to the file ~/.bashrc, the variable will be set automatically every time you log in.
echo $SHELL
If you are using /bin/tcsh:
setenv VARIABLE VALUE
If you are using /bin/bash:
export VARIABLE=VALUE
Run it from the shell, not from another program (e.g. Midnight Commander). Or you can patch it by appending the following arguments to the call to JProcess::Create(): "kJIgnoreConnection, NULL, kJTossOutput, NULL, kJAttachToFromFD, NULL"
Or you can patch it by appending the following arguments to the call to JProcess::Create(): "kJIgnoreConnection, NULL, kJTossOutput, NULL, kJAttachToFromFD, NULL"
Remove all old copies of makemake from your system.
You need to set the environment variable ACE_ROOT, as explained in the instructions printed when you run make in the top level directory.
You need to create a symbolic link /usr/include/X11 that points to the directory containing the X11 header files on your system. This is often /usr/X11R6/include. If you do not have root access and your system administrator doesn't want to create the link, then uncomment J_X11_INCLUDE_DIR and set it to point to the directory containing the X11 header files.
If you do not have root access and your system administrator doesn't want to create the link, then uncomment J_X11_INCLUDE_DIR and set it to point to the directory containing the X11 header files.
Add -fpermissive to J_RAW_SYSTEM_STUFF in include/make/jx_config.
Comment out J_DIE_ON_WARNING in include/make/jx_config.
Uncomment J_FORCE_ACE_STATIC in include/make/jx_config. Then delete ACE/ACE_wrappers/ace/libACE.so and run make again. Please notify us so we can update the configuration for your system.
Uncomment JX_INCLUDE_LIBXPM in include/make/jx_config.
Change J_STRIP_DEBUG to "echo" in include/make/jx_config.
Run "make J_WANT_INSTALL=0 target"
Fix the definition of the delete macro in jNew.h to use a comma instead of a semicolon. ACE Do I have to use the version of ACE included with JX? No. JX uses only the elementary functionality provided by ACE, and since this is very unlikely to change, you can safely use newer versions. AIX AIX has known problems with shared libraries. If you compile with optimization, you will get core dumps. If you build static libraries or compile without optimization, you should not have any problems. FreeBSD On FreeBSD 2.2.x, I have trouble with ACE. How do I fix this? Uncomment ACE_HAS_SIGINFO_T and ACE_HAS_SIGWAIT in ACE/ACE_wrappers/ace/config-freebsd.h HPUX I get ACE errors when compiling JX. How do I fix this? Add -DACE_HAS_THREADS to J_RAW_SYSTEM_STUFF in include/make/jx_config. IRIX Patch for IRIX 5.3 when using g++ 2.8.1: Add #define ACE_HAS_DIRENT to ACE/ACE_wrappers/ace/config-irix5.3-g++.h. Slackware (Linux) I get a ton of errors when compiling ACE on old versions of Slackware. How do I fix this? This is due to errors in the system header files. You can try to uncomment the line defining ACE_LACKS_MADVISE in ACE/ACE_wrappers/ace/config-linux-common.h. If this doesn't work, then we do not know of any way to fix the problem other than switching to a different Linux distribution. Solaris It complains "/usr/ucb/cc: language optional software package not installed" How do I fix this? This means that Sun Microsystems didn't even give you a plain C compiler as part of your UNIX installation. Your options are: Install the cc/CC package from Sun. Try the g++ build target instead. (Installing gcc/g++ doesn't cost money!) You may also need to include "CC=gcc" as part of the make command. It complains about missing return value specifications for most of the Xlib functions. How do I fix this? Add -fpermissive or -Wno-return-type to J_RAW_SYSTEM_STUFF in include/make/jx_config. Then tell your system administrator to pester the X Consortium to release a cleaner Xlib distribution. You can apparently also simply use the Xlib.h and Xutil.h files provided by XFree86, at least on SunOS 5.7. It refuses to build the shared libraries. How do I fix this? Change J_SHARED_LIB_LINK_OPTION to -shared or -G in include/make/jx_config. It refuses to strip the shared libraries. How do I fix this? Change J_STRIP_DEBUG to "strip -x" in include/make/jx_config. Makemake fails because it can't find libucb.so. How do I fix this? Add /usr/ucblib to your LD_LIBRARY_PATH environment variable.
No. JX uses only the elementary functionality provided by ACE, and since this is very unlikely to change, you can safely use newer versions.
AIX has known problems with shared libraries. If you compile with optimization, you will get core dumps. If you build static libraries or compile without optimization, you should not have any problems. FreeBSD On FreeBSD 2.2.x, I have trouble with ACE. How do I fix this? Uncomment ACE_HAS_SIGINFO_T and ACE_HAS_SIGWAIT in ACE/ACE_wrappers/ace/config-freebsd.h HPUX I get ACE errors when compiling JX. How do I fix this? Add -DACE_HAS_THREADS to J_RAW_SYSTEM_STUFF in include/make/jx_config. IRIX Patch for IRIX 5.3 when using g++ 2.8.1: Add #define ACE_HAS_DIRENT to ACE/ACE_wrappers/ace/config-irix5.3-g++.h. Slackware (Linux) I get a ton of errors when compiling ACE on old versions of Slackware. How do I fix this? This is due to errors in the system header files. You can try to uncomment the line defining ACE_LACKS_MADVISE in ACE/ACE_wrappers/ace/config-linux-common.h. If this doesn't work, then we do not know of any way to fix the problem other than switching to a different Linux distribution. Solaris It complains "/usr/ucb/cc: language optional software package not installed" How do I fix this? This means that Sun Microsystems didn't even give you a plain C compiler as part of your UNIX installation. Your options are: Install the cc/CC package from Sun. Try the g++ build target instead. (Installing gcc/g++ doesn't cost money!) You may also need to include "CC=gcc" as part of the make command. It complains about missing return value specifications for most of the Xlib functions. How do I fix this? Add -fpermissive or -Wno-return-type to J_RAW_SYSTEM_STUFF in include/make/jx_config. Then tell your system administrator to pester the X Consortium to release a cleaner Xlib distribution. You can apparently also simply use the Xlib.h and Xutil.h files provided by XFree86, at least on SunOS 5.7. It refuses to build the shared libraries. How do I fix this? Change J_SHARED_LIB_LINK_OPTION to -shared or -G in include/make/jx_config. It refuses to strip the shared libraries. How do I fix this? Change J_STRIP_DEBUG to "strip -x" in include/make/jx_config. Makemake fails because it can't find libucb.so. How do I fix this? Add /usr/ucblib to your LD_LIBRARY_PATH environment variable.
Uncomment ACE_HAS_SIGINFO_T and ACE_HAS_SIGWAIT in ACE/ACE_wrappers/ace/config-freebsd.h
Add -DACE_HAS_THREADS to J_RAW_SYSTEM_STUFF in include/make/jx_config.
Add #define ACE_HAS_DIRENT to ACE/ACE_wrappers/ace/config-irix5.3-g++.h.
This is due to errors in the system header files. You can try to uncomment the line defining ACE_LACKS_MADVISE in ACE/ACE_wrappers/ace/config-linux-common.h. If this doesn't work, then we do not know of any way to fix the problem other than switching to a different Linux distribution.
This means that Sun Microsystems didn't even give you a plain C compiler as part of your UNIX installation. Your options are: Install the cc/CC package from Sun. Try the g++ build target instead. (Installing gcc/g++ doesn't cost money!) You may also need to include "CC=gcc" as part of the make command.
Add -fpermissive or -Wno-return-type to J_RAW_SYSTEM_STUFF in include/make/jx_config. Then tell your system administrator to pester the X Consortium to release a cleaner Xlib distribution. You can apparently also simply use the Xlib.h and Xutil.h files provided by XFree86, at least on SunOS 5.7.
You can apparently also simply use the Xlib.h and Xutil.h files provided by XFree86, at least on SunOS 5.7.
Change J_SHARED_LIB_LINK_OPTION to -shared or -G in include/make/jx_config.
Change J_STRIP_DEBUG to "strip -x" in include/make/jx_config.
Add /usr/ucblib to your LD_LIBRARY_PATH environment variable.