top bar

Compiling MM and creating deb files on 64-bit Ubuntu

Revision as of 17:48, 22 April 2014 by Mark Tsuchida (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
These instructions refer to very old versions of Micro-Manager source code.

This note was written using Revision: 2580 ( that contained fixes to linux build by Nico and debian-specific scripts by Johan. Following notes are a log of things I needed to do for building the deb packages successfully and running micro-manager. Suggestions were provided by Martin and Johan. Search "non-hardware micro-manager setup on linux" thread in micro-manager-general list. These steps will be out-of-date sooner rather than later, but should provide an idea of overall process.

OS was Ubuntu jaunty.

--Shalin 12:44, 2 June 2009 (UTC)

Pre-requisite packages

- ImageJ (either debian package or uncompress tar.gz from ImageJ website in /usr/local/ImageJ/). The debs on launchpad are version 1.41n whereas you can get the latest from the ImageJ website. Micro-manager plugin requires ImageJ version 1.42n and above.

- sun-java6-jdk




-libswingx-java (ver. 0.9.2)








More or less packages may be required. Above was what I needed to install.

After all is setup, cd to directory of choice and get SVN copy of micro-manager

$svn co

I received Revision 2580.

Bootstrap the autobuild tools.


Configure and build

$./configure --with-imagej=/usr/local/ImageJ (Replace the path suitably)


  • Errors encountered during make:

1. In USBManager.

*** Warning: Linking the shared library against the *** static library /usr/lib/libusb.a is not portable! libtool: link: g++ -shared -nostdlib /usr/lib/gcc/x86_64-linux-gnu/4.3.3/../../../../lib/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.3.3/crtbeginS.o .libs/USBManager.o ../../MMDevice/.libs/libMMDevice.a /usr/lib/libusb.a -L/usr/lib/gcc/x86_64-linux-gnu/4.3.3 -L/usr/lib/gcc/x86_64-linux-gnu/4.3.3/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.3.3/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/4.3.3/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/4.3.3/../../../../lib/crtn.o -Wl,-soname -Wl, -o .libs/ /usr/bin/ld: /usr/lib/libusb.a(usb.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC /usr/lib/libusb.a: could not read symbols: Bad value collect2: ld returned 1 exit status make[2]: *** [] Error 1 make[2]: Leaving directory `/home/sanguine/research/umanager/micromanager1.3/DeviceAdapters/USBManager' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/sanguine/research/umanager/micromanager1.3/DeviceAdapters' make: *** [all-recursive] Error 1

  • Resolved by deleting references to USBManager in DIST_SUBDIR variable inside DeviceAdapters/Makefile.
  • Compilation succeded!!

If not making debian packages, do $make install and you should be fine. I haven't tried it yet.

Making debian packages. The path I chose for easy management of files.

  • Modify newImageJ script inside portdebian directory.
 Substitute all references to /usr/share/imagej by /usr/local/ImageJ 
  • Modify debiancontrol.port inside portdebian directory.
 Architecture: amd64 in debiancontrol.port .
  • Modify inside portdebian
 Substitute all references to /usr/share/imagej by /usr/local/ImageJ   
 Include configuration, html, and xml acquisition samples inside the package.
  ##### Programs 
 mkdir -p $ROOTBIN/usr/bin/
 cp Test_Serial/mm_testserial ModuleTest/mm_moduletest Test_MMCore/mm_testCore $ROOTBIN/usr/bin/
 strip $ROOTBIN/usr/bin/*
  ##### And configuration files 
 cp bin/*.cfg $ROOTBIN/usr/bin/
 cp bin/*.html $ROOTBIN/usr/bin/
 cp bin/*.xml $ROOTBIN/usr/bin/

  • Then do $./portdebian/

Got error: cp: cannot stat `Tracking/Tracker_.jar': No such file or directory

Error resolved by $cd Tracking, $make. Somehow earlier make had missed it.

  • Two packages micromanager.deb and micromanager-ij.deb are created in top directory of the source tree. Install them.

$ dpkg -i micromanager micromanager-ij worked.

  • imagejmm script created by micromanager-ij works, however doesn't bring up micro-manager. You need to invoke it from Plugins-> Micro-manager -> Micro-manager Studio.
© Micro-Manager : Vale Lab, UCSF 2006-2011 | All Rights Reserved | Contact