GithubHelp home page GithubHelp logo

Comments (2)

tthh7 avatar tthh7 commented on September 27, 2024 2

您好,我不知道您要构建哪个版本,但这是我如何v3.1.0在 CentOS 7 上构建的示例:

export mapnik_version=3.1.0
mkdir --parents /tmp/mapnik_src
cd /tmp/mapnik_src

yum --assumeyes install epel-release centos-release-scl
yum --assumeyes upgrade
yum --assumeyes install \
    boost169-devel \
    bzip2 \
    cairo-devel \
    freetype-devel \
    devtoolset-9-gcc \
    devtoolset-9-gcc-c++ \
    gdal-devel \
    harfbuzz-devel \
    libicu-devel \
    libjpeg-devel \
    libpng-devel \
    libtiff-devel \
    libwebp-devel \
    libxml2-devel \
    make \
    patch \
    postgresql-devel \
    proj-devel \
    python3 \
    sqlite-devel \
    tar \
    zlib-devel

export DESTDIR="/tmp/mapnik"
export GDAL_DATA="$(gdal-config --datadir)"
export JOBS="$(nproc)"
export PROJ_LIB="/usr/share/proj"
export PYTHON="python3"
mkdir --parents ${GDAL_DATA} ${PROJ_LIB}
if [ ! -f SConstruct ]; then \
    curl --silent --location https://github.com/mapnik/mapnik/releases/download/v${mapnik_version}/mapnik-v${mapnik_version}.tar.bz2 \
        | tar --extract --bzip2 --strip-components=1 --file=-
    sed -i 's#BOOST_APPEND = match.groups()\[0\]#BOOST_APPEND = ""#g' SConstruct
fi
source /opt/rh/devtoolset-9/enable
export CUSTOM_DEFINES="-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H"
export CUSTOM_LDFLAGS="-L/usr/lib64/boost169"
bash configure \
    CPP_TESTS=False \
    CUSTOM_CFLAGS="${CUSTOM_CFLAGS:-}" \
    CUSTOM_CXXFLAGS="${CUSTOM_CXXFLAGS:-}" \
    CUSTOM_DEFINES="${CUSTOM_DEFINES:-}" \
    CUSTOM_LDFLAGS="${CUSTOM_LDFLAGS:-}" \
    DEMO=False \
    DESTDIR="${DESTDIR}" \
    FAST=True \
    INPUT_PLUGINS=all \
    LIBDIR_SCHEMA=lib64 \
    OPTIMIZATION=2 \
    PREFIX=/usr \
    SVG2PNG=True \
    XMLPARSER=libxml2
make PYTHON="${PYTHON}"

此时,libmapnik.a不存在。

find . -name libmapnik.a

最初配置LINKING=static似乎会导致构建失败,但是,当再次运行最后两个命令时,LINKING=static它确实构建libmapnik.a成功。

bash configure \
    CPP_TESTS=False \
    CUSTOM_CFLAGS="${CUSTOM_CFLAGS:-}" \
    CUSTOM_CXXFLAGS="${CUSTOM_CXXFLAGS:-}" \
    CUSTOM_DEFINES="${CUSTOM_DEFINES:-}" \
    CUSTOM_LDFLAGS="${CUSTOM_LDFLAGS:-}" \
    LINKING=static \
    DEMO=False \
    DESTDIR="${DESTDIR}" \
    FAST=True \
    INPUT_PLUGINS=all \
    LIBDIR_SCHEMA=lib64 \
    OPTIMIZATION=2 \
    PREFIX=/usr \
    SVG2PNG=True \
    XMLPARSER=libxml2
make PYTHON="${PYTHON}"
find . -name libmapnik.a
./src/libmapnik.a

Thank you very much for your patient explanation. I am using version 3.0.19. Following the method you provided, I have successfully obtained the libmapnik.a file. Thanks

from mapnik.

hummeltech avatar hummeltech commented on September 27, 2024

Hello, I can't tell which version you're trying to build, but here's an example of how I build v3.1.0 on CentOS 7:

export mapnik_version=3.1.0
mkdir --parents /tmp/mapnik_src
cd /tmp/mapnik_src

yum --assumeyes install epel-release centos-release-scl
yum --assumeyes upgrade
yum --assumeyes install \
    boost169-devel \
    bzip2 \
    cairo-devel \
    freetype-devel \
    devtoolset-9-gcc \
    devtoolset-9-gcc-c++ \
    gdal-devel \
    harfbuzz-devel \
    libicu-devel \
    libjpeg-devel \
    libpng-devel \
    libtiff-devel \
    libwebp-devel \
    libxml2-devel \
    make \
    patch \
    postgresql-devel \
    proj-devel \
    python3 \
    sqlite-devel \
    tar \
    zlib-devel

export DESTDIR="/tmp/mapnik"
export GDAL_DATA="$(gdal-config --datadir)"
export JOBS="$(nproc)"
export PROJ_LIB="/usr/share/proj"
export PYTHON="python3"
mkdir --parents ${GDAL_DATA} ${PROJ_LIB}
if [ ! -f SConstruct ]; then \
    curl --silent --location https://github.com/mapnik/mapnik/releases/download/v${mapnik_version}/mapnik-v${mapnik_version}.tar.bz2 \
        | tar --extract --bzip2 --strip-components=1 --file=-
    sed -i 's#BOOST_APPEND = match.groups()\[0\]#BOOST_APPEND = ""#g' SConstruct
fi
source /opt/rh/devtoolset-9/enable
export CUSTOM_DEFINES="-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H"
export CUSTOM_LDFLAGS="-L/usr/lib64/boost169"
bash configure \
    CPP_TESTS=False \
    CUSTOM_CFLAGS="${CUSTOM_CFLAGS:-}" \
    CUSTOM_CXXFLAGS="${CUSTOM_CXXFLAGS:-}" \
    CUSTOM_DEFINES="${CUSTOM_DEFINES:-}" \
    CUSTOM_LDFLAGS="${CUSTOM_LDFLAGS:-}" \
    DEMO=False \
    DESTDIR="${DESTDIR}" \
    FAST=True \
    INPUT_PLUGINS=all \
    LIBDIR_SCHEMA=lib64 \
    OPTIMIZATION=2 \
    PREFIX=/usr \
    SVG2PNG=True \
    XMLPARSER=libxml2
make PYTHON="${PYTHON}"

At this point, libmapnik.a does not exist.

find . -name libmapnik.a

Initially configuring with LINKING=static seems to cause the build to fail, however, when running the last two commands again with LINKING=static it does build libmapnik.a successfully.

bash configure \
    CPP_TESTS=False \
    CUSTOM_CFLAGS="${CUSTOM_CFLAGS:-}" \
    CUSTOM_CXXFLAGS="${CUSTOM_CXXFLAGS:-}" \
    CUSTOM_DEFINES="${CUSTOM_DEFINES:-}" \
    CUSTOM_LDFLAGS="${CUSTOM_LDFLAGS:-}" \
    LINKING=static \
    DEMO=False \
    DESTDIR="${DESTDIR}" \
    FAST=True \
    INPUT_PLUGINS=all \
    LIBDIR_SCHEMA=lib64 \
    OPTIMIZATION=2 \
    PREFIX=/usr \
    SVG2PNG=True \
    XMLPARSER=libxml2
make PYTHON="${PYTHON}"
find . -name libmapnik.a
./src/libmapnik.a

from mapnik.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.