OpenCSW for Developers

This is a manual for developers who want to build own software, using tools and libraries provided by OpenCSW.

Linking against OpenCSW libraries

To build own software against libraries distributed by OpenCSW, install the relevant *_dev packages. They contain the header files, and *.so symlinks necessary during linking.

Typical file layout of libraries:

CSWfoo_dev: /opt/csw/include/foo.h
            /opt/csw/lib/libfoo.so -> libfoo.so.1
CSWlibfoo1: /opt/csw/lib/libfoo.so.1 -> libfoo.so.1.0.0
            /opt/csw/lib/libfoo.so.1.0.0 (regular file)

Autotools and GCC

Set PATH to include the path to the compiler you wish to use. If you’re using GCC from OpenCSW, you set it to /opt/csw/bin.

Autotools-based projects by default accept a standard set of environment variables. Here are values for a 32-bit build:

CFLAGS="-m32"  # if you're using GCC
CPPFLAGS="-I/opt/csw/include"
LDFLAGS="-L/opt/csw/lib -R/opt/csw/lib"
PKG_CONFIG_PATH="/opt/csw/lib/pkgconfig"

If you’re building a 64-bit binary, use these:

CFLAGS="-m64"  # if you're using GCC
CPPFLAGS="-I/opt/csw/include"
LDFLAGS="-L/opt/csw/lib/64 -R/opt/csw/lib/64"
PKG_CONFIG_PATH="/opt/csw/lib/64/pkgconfig"

64-bit libraries live in these directories, depending on the architecture:

/opt/csw/lib/sparcv9
/opt/csw/lib/amd64

The /opt/csw/lib/64 path is a symlink to a chosen architecture subdirectory. For example, on SPARC /opt/csw/lib/64 is a symlink to /opt/csw/lib/sparcv9.

All binaries compiled with the -R/opt/csw/lib/64 flag will try to look at that path and find their corresponding sparcv9 or amd64 libraries. This way you can use the same -R flag for both sparc and intel 64-bit builds.

We recommend the Autotools Mythbuster as a reference to Autotools.

A non-autotools project

If you’re building a project which does not use autotools, you need to tell the compiler to do the following:

  1. Look into /opt/csw/include for the .h files. In GCC, it’s achieved with -I/opt/csw/include. Without it, compilation will fail.
  2. Look into /opt/csw/lib for the .so files. In GCC, it’s achieved with -L/opt/csw/lib. Without it, linking will fail.
  3. Put /opt/csw/lib into the RPATH field in the ELF header. In GCC, this is achieved with -R/opt/csw/lib/. Without it, binaries will build, but won’t run.

For 64-bit builds, use /opt/csw/lib/64.

If your compiler is not GCC, you might need to pass different flags.

How to add flags to the compiler invocations, depends on the build system of the software you’re building.

Table Of Contents

Previous topic

Frequently Asked Questions

Next topic

OpenCSW for Package Maintainers

This Page