LinuxQuestions.org
Help answer threads with 0 replies.
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Software
User Name
Password
Linux - Software This forum is for Software issues.
Having a problem installing a new program? Want to know which application is best for the job? Post your question in this forum.

Notices


Reply
  Search this Thread
Old 08-14-2018, 01:51 PM   #1
E71
LQ Newbie
 
Registered: Oct 2007
Distribution: CentOS 6.10 64bit
Posts: 22

Rep: Reputation: 0
Question Add/overwrite libs and includes before compiling


Edit: Sorry, title should be override, not overwrite.

Hey everybody,

I'm running CentOS 6.10 64bit and trying to compile ZNC IRC bouncer but have little experience with compiling/linking.

It requires a newer libicu/libicu-devel than the one I already have installed via yum (libicu v4.2.1).

Here's the catch: I need to keep the existing libicu/libicu-devel (another program needs this version) and "override" it with another copy during the compile process.

I've download a pre-compiled (for RHEL6) copy of icu v57.1 and placed it in /opt/icu-57.1. (See the file structure of this path below.)

There are a few things I've been tinkering with (such as environment variables, ldconfig, pkg-config) but I'm not at all sure what combination of them is required to get './configure' and 'make' to work right.

Also, if it's relevant, I'm running in SCL environment (for access to newer compilers, perl, python, etc.), accessed via command: "scl enable devtoolset-7 rh-perl524 rh-python36 bash".

Thank you for any comments or suggestions you may have,
E.

-----------------------------------------------------

ZNC's readme hints at these environment variables:

Code:
Some influential environment variables:
  CXX         C++ compiler command
  CXXFLAGS    C++ compiler flags
  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
              nonstandard directory <lib dir>
  LIBS        libraries to pass to the linker, e.g. -l<library>
  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
              you have headers in a nonstandard directory <include dir>
  PKG_CONFIG  path to pkg-config utility
  PKG_CONFIG_PATH
              directories to add to pkg-config's search path
  PKG_CONFIG_LIBDIR
              path overriding pkg-config's built-in search path
  openssl_CFLAGS
              C compiler flags for openssl, overriding pkg-config
  openssl_LIBS
              linker flags for openssl, overriding pkg-config
  icu_CFLAGS  C compiler flags for icu, overriding pkg-config
  icu_LIBS    linker flags for icu, overriding pkg-config
  qt_CFLAGS   C compiler flags for qt, overriding pkg-config
  qt_LIBS     linker flags for qt, overriding pkg-config
  python_CFLAGS
              C compiler flags for python, overriding pkg-config
  python_LIBS linker flags for python, overriding pkg-config

Directory structure for pre-compiled icu 57.1:

Code:
/opt/icu-57.1/
├── bin
│** ├── derb
│** ├── genbrk
│** ├── gencfu
│** ├── gencnval
│** ├── gendict
│** ├── genrb
│** ├── icu-config
│** ├── icuinfo
│** ├── makeconv
│** ├── pkgdata
│** └── uconv
├── include
│** ├── layout
│** │** ├── LayoutEngine.h
│** │** ├── LEFontInstance.h
│** │** ├── LEGlyphFilter.h
│** │** ├── LEGlyphStorage.h
│** │** ├── LEInsertionList.h
│** │** ├── LELanguages.h
│** │** ├── LEScripts.h
│** │** ├── LESwaps.h
│** │** ├── LETableReference.h
│** │** ├── LETypes.h
│** │** ├── loengine.h
│** │** ├── ParagraphLayout.h
│** │** ├── playout.h
│** │** ├── plruns.h
│** │** └── RunArrays.h
│** └── unicode
│**     ├── alphaindex.h
│**     ├── appendable.h
│**     ├── basictz.h
│**     ├── brkiter.h
│**     ├── bytestream.h
│**     ├── bytestriebuilder.h
│**     ├── bytestrie.h
│**     ├── calendar.h
│**     ├── caniter.h
│**     ├── chariter.h
│**     ├── choicfmt.h
│**     ├── coleitr.h
│**     ├── coll.h
│**     ├── compactdecimalformat.h
│**     ├── curramt.h
│**     ├── currpinf.h
│**     ├── currunit.h
│**     ├── datefmt.h
│**     ├── dbbi.h
│**     ├── dcfmtsym.h
│**     ├── decimfmt.h
│**     ├── docmain.h
│**     ├── dtfmtsym.h
│**     ├── dtintrv.h
│**     ├── dtitvfmt.h
│**     ├── dtitvinf.h
│**     ├── dtptngen.h
│**     ├── dtrule.h
│**     ├── enumset.h
│**     ├── errorcode.h
│**     ├── fieldpos.h
│**     ├── filteredbrk.h
│**     ├── fmtable.h
│**     ├── format.h
│**     ├── fpositer.h
│**     ├── gender.h
│**     ├── gregocal.h
│**     ├── icudataver.h
│**     ├── icuplug.h
│**     ├── idna.h
│**     ├── listformatter.h
│**     ├── localpointer.h
│**     ├── locdspnm.h
│**     ├── locid.h
│**     ├── measfmt.h
│**     ├── measunit.h
│**     ├── measure.h
│**     ├── messagepattern.h
│**     ├── msgfmt.h
│**     ├── normalizer2.h
│**     ├── normlzr.h
│**     ├── numfmt.h
│**     ├── numsys.h
│**     ├── parseerr.h
│**     ├── parsepos.h
│**     ├── platform.h
│**     ├── plurfmt.h
│**     ├── plurrule.h
│**     ├── ptypes.h
│**     ├── putil.h
│**     ├── rbbi.h
│**     ├── rbnf.h
│**     ├── rbtz.h
│**     ├── regex.h
│**     ├── region.h
│**     ├── reldatefmt.h
│**     ├── rep.h
│**     ├── resbund.h
│**     ├── schriter.h
│**     ├── scientificnumberformatter.h
│**     ├── search.h
│**     ├── selfmt.h
│**     ├── simpleformatter.h
│**     ├── simpletz.h
│**     ├── smpdtfmt.h
│**     ├── sortkey.h
│**     ├── std_string.h
│**     ├── strenum.h
│**     ├── stringpiece.h
│**     ├── stringtriebuilder.h
│**     ├── stsearch.h
│**     ├── symtable.h
│**     ├── tblcoll.h
│**     ├── timezone.h
│**     ├── tmunit.h
│**     ├── tmutamt.h
│**     ├── tmutfmt.h
│**     ├── translit.h
│**     ├── tzfmt.h
│**     ├── tznames.h
│**     ├── tzrule.h
│**     ├── tztrans.h
│**     ├── ubidi.h
│**     ├── ubrk.h
│**     ├── ucal.h
│**     ├── ucasemap.h
│**     ├── ucat.h
│**     ├── uchar.h
│**     ├── ucharstriebuilder.h
│**     ├── ucharstrie.h
│**     ├── uchriter.h
│**     ├── uclean.h
│**     ├── ucnv_cb.h
│**     ├── ucnv_err.h
│**     ├── ucnv.h
│**     ├── ucnvsel.h
│**     ├── ucoleitr.h
│**     ├── ucol.h
│**     ├── uconfig.h
│**     ├── ucsdet.h
│**     ├── ucurr.h
│**     ├── udata.h
│**     ├── udateintervalformat.h
│**     ├── udat.h
│**     ├── udatpg.h
│**     ├── udisplaycontext.h
│**     ├── uenum.h
│**     ├── ufieldpositer.h
│**     ├── uformattable.h
│**     ├── ugender.h
│**     ├── uidna.h
│**     ├── uiter.h
│**     ├── uldnames.h
│**     ├── ulistformatter.h
│**     ├── ulocdata.h
│**     ├── uloc.h
│**     ├── umachine.h
│**     ├── umisc.h
│**     ├── umsg.h
│**     ├── unifilt.h
│**     ├── unifunct.h
│**     ├── unimatch.h
│**     ├── unirepl.h
│**     ├── uniset.h
│**     ├── unistr.h
│**     ├── unorm2.h
│**     ├── unorm.h
│**     ├── unum.h
│**     ├── unumsys.h
│**     ├── uobject.h
│**     ├── upluralrules.h
│**     ├── uregex.h
│**     ├── uregion.h
│**     ├── ureldatefmt.h
│**     ├── urename.h
│**     ├── urep.h
│**     ├── ures.h
│**     ├── uscript.h
│**     ├── usearch.h
│**     ├── uset.h
│**     ├── usetiter.h
│**     ├── ushape.h
│**     ├── uspoof.h
│**     ├── usprep.h
│**     ├── ustdio.h
│**     ├── ustream.h
│**     ├── ustring.h
│**     ├── ustringtrie.h
│**     ├── utext.h
│**     ├── utf16.h
│**     ├── utf32.h
│**     ├── utf8.h
│**     ├── utf.h
│**     ├── utf_old.h
│**     ├── utmscale.h
│**     ├── utrace.h
│**     ├── utrans.h
│**     ├── utypes.h
│**     ├── uvernum.h
│**     ├── uversion.h
│**     └── vtzone.h
├── lib
│** ├── icu
│** │** ├── 57.1
│** │** │** ├── Makefile.inc
│** │** │** └── pkgdata.inc
│** │** ├── current -> 57.1
│** │** ├── Makefile.inc -> current/Makefile.inc
│** │** └── pkgdata.inc -> current/pkgdata.inc
│** ├── libicudata.so -> libicudata.so.57.1
│** ├── libicudata.so.57 -> libicudata.so.57.1
│** ├── libicudata.so.57.1
│** ├── libicui18n.so -> libicui18n.so.57.1
│** ├── libicui18n.so.57 -> libicui18n.so.57.1
│** ├── libicui18n.so.57.1
│** ├── libicuio.so -> libicuio.so.57.1
│** ├── libicuio.so.57 -> libicuio.so.57.1
│** ├── libicuio.so.57.1
│** ├── libicule.so -> libicule.so.57.1
│** ├── libicule.so.57 -> libicule.so.57.1
│** ├── libicule.so.57.1
│** ├── libiculx.so -> libiculx.so.57.1
│** ├── libiculx.so.57 -> libiculx.so.57.1
│** ├── libiculx.so.57.1
│** ├── libicutest.so -> libicutest.so.57.1
│** ├── libicutest.so.57 -> libicutest.so.57.1
│** ├── libicutest.so.57.1
│** ├── libicutu.so -> libicutu.so.57.1
│** ├── libicutu.so.57 -> libicutu.so.57.1
│** ├── libicutu.so.57.1
│** ├── libicuuc.so -> libicuuc.so.57.1
│** ├── libicuuc.so.57 -> libicuuc.so.57.1
│** ├── libicuuc.so.57.1
│** └── pkgconfig
│**     ├── icu-i18n.pc
│**     ├── icu-io.pc
│**     ├── icu-le.pc
│**     ├── icu-lx.pc
│**     └── icu-uc.pc
├── sbin
│** ├── genccode
│** ├── gencmn
│** ├── gennorm2
│** ├── gensprep
│** └── icupkg
└── share
    ├── icu
    │** └── 57.1
    │**     ├── config
    │**     │** └── mh-linux
    │**     ├── install-sh
    │**     ├── LICENSE
    │**     └── mkinstalldirs
    └── man
        ├── man1
        │** ├── derb.1
        │** ├── genbrk.1
        │** ├── gencfu.1
        │** ├── gencnval.1
        │** ├── gendict.1
        │** ├── genrb.1
        │** ├── icu-config.1
        │** ├── makeconv.1
        │** ├── pkgdata.1
        │** └── uconv.1
        └── man8
            ├── genccode.8
            ├── gencmn.8
            ├── gensprep.8
            └── icupkg.8

17 directories, 253 files

Last edited by E71; 08-16-2018 at 08:18 AM.
 
Old 08-15-2018, 11:02 AM   #2
business_kid
LQ Guru
 
Registered: Jan 2006
Location: Ireland
Distribution: Slackware, Slarm64 & Android
Posts: 16,141

Rep: Reputation: 2307Reputation: 2307Reputation: 2307Reputation: 2307Reputation: 2307Reputation: 2307Reputation: 2307Reputation: 2307Reputation: 2307Reputation: 2307Reputation: 2307
I would approach the compilation as below, and running with environment variables. If you don't know much about this, Back up fully before you do anything
In your package to be conpiled, you run ./configure --help |less. Read the stuff, and scheme. Package configurations differ. You actually have to fool the package in at least three areas
1, Libraries
2. Includes
3. pkgconfig

Now it might go very easy, but may be next to impossible. Your desire is to have it find the newer libicu, ignore the older one, and treat everything else the same.

Another way to go is to stuff it in a vm. Alternatively, you could provide a separate planet on /opt for a user or script by symlinking in all libs and includes, and pkgconfig files some way like this
Code:
cd /opt/
install -d lib  usr/lib usr/include
lndir /lib lib
lndir /usr/lib usr/lib
lndir /usr/include  usr/include
On Centos (=red hat), if you don't really need that version on this system, I'd work around it.
 
Old 08-16-2018, 06:49 AM   #3
E71
LQ Newbie
 
Registered: Oct 2007
Distribution: CentOS 6.10 64bit
Posts: 22

Original Poster
Rep: Reputation: 0
Quote:
Originally Posted by business_kid View Post
I would approach the compilation as below, and running with environment variables. If you don't know much about this, Back up fully before you do anything
In your package to be conpiled, you run ./configure --help |less. Read the stuff, and scheme. Package configurations differ. You actually have to fool the package in at least three areas
1, Libraries
2. Includes
3. pkgconfig

Now it might go very easy, but may be next to impossible. Your desire is to have it find the newer libicu, ignore the older one, and treat everything else the same.
Thanks for the suggestion.

Here's configure script's help information:

Code:
[root@host znc-1.7.1]# ./configure --help
`configure' configures znc 1.7.1 to adapt to many kinds of systems.

Usage: ./configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.  See below for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

Configuration:
  -h, --help              display this help and exit
      --help=short        display options specific to this package
      --help=recursive    display the short help of all the included packages
  -V, --version           display version information and exit
  -q, --quiet, --silent   do not print `checking ...' messages
      --cache-file=FILE   cache test results in FILE [disabled]
  -C, --config-cache      alias for `--cache-file=config.cache'
  -n, --no-create         do not create output files
      --srcdir=DIR        find the sources in DIR [configure dir or `..']

Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [PREFIX]

By default, `make install' will install all the files in
`/usr/local/bin', `/usr/local/lib' etc.  You can specify
an installation prefix other than `/usr/local' using `--prefix',
for instance `--prefix=$HOME'.

For better control, use the options below.

Fine tuning of the installation directories:
  --bindir=DIR            user executables [EPREFIX/bin]
  --sbindir=DIR           system admin executables [EPREFIX/sbin]
  --libexecdir=DIR        program executables [EPREFIX/libexec]
  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
  --libdir=DIR            object code libraries [EPREFIX/lib]
  --includedir=DIR        C header files [PREFIX/include]
  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
  --infodir=DIR           info documentation [DATAROOTDIR/info]
  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
  --mandir=DIR            man documentation [DATAROOTDIR/man]
  --docdir=DIR            documentation root [DATAROOTDIR/doc/znc]
  --htmldir=DIR           html documentation [DOCDIR]
  --dvidir=DIR            dvi documentation [DOCDIR]
  --pdfdir=DIR            pdf documentation [DOCDIR]
  --psdir=DIR             ps documentation [DOCDIR]

System types:
  --build=BUILD     configure for building on BUILD [guessed]
  --host=HOST       cross-compile to build programs to run on HOST [BUILD]

Optional Features:
  --disable-option-checking  ignore unrecognized --enable/--with options
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --disable-largefile     omit support for large files
  --enable-debug          enable debugging
  --disable-ipv6          disable ipv6 support
  --disable-openssl       disable openssl
  --disable-zlib          disable zlib
  --enable-perl           enable perl
  --enable-python[=python3]
                          enable python. By default python3.pc of pkg-config
                          is used, but you can use another name, for example
                          python-3.1
  --enable-swig           Enable automatic generation of source files needed
                          for modperl/modpython. This value is ignored if perl
                          and python are disabled. Usually no need to enable
                          it.
  --enable-cyrus          enable cyrus
  --disable-optimization  Disable some compiler optimizations to decrease
                          memory usage while compiling
  --disable-tdns          disable threads usage for DNS resolving
  --enable-run-from-source
                          ZNC will be runnable without installation
  --disable-poll          use select() instead of poll()
  --disable-charset       disable ICU support
  --enable-tcl            enable modtcl

Optional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --with-gtest=DIR        Path to directory with src/gtest-all.cc file. If not
                          specified, git submodule will be used. If it is not
                          available either, "make test" will fail.
  --with-gmock=DIR        Path to directory with src/gmock-all.cc and
                          src/gmock_main.cc files. If not specified, git
                          submodule will be used. If it is not available
                          either, "make test" will fail.
  --with-systemdsystemunitdir=DIR
                          Directory for systemd service files
  --with-module-prefix    module object code [LIBDIR/znc]
  --with-module-data-prefix=DIR
                          static module data (webadmin skins) [DATADIR/znc]
  --with-tcl-flags=FLAGS  The flags needed for compiling and linking modtcl
  --with-tcl=DIR          directory containing tclConfig.sh

Some influential environment variables:
  CXX         C++ compiler command
  CXXFLAGS    C++ compiler flags
  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
              nonstandard directory <lib dir>
  LIBS        libraries to pass to the linker, e.g. -l<library>
  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
              you have headers in a nonstandard directory <include dir>
  PKG_CONFIG  path to pkg-config utility
  PKG_CONFIG_PATH
              directories to add to pkg-config's search path
  PKG_CONFIG_LIBDIR
              path overriding pkg-config's built-in search path
  openssl_CFLAGS
              C compiler flags for openssl, overriding pkg-config
  openssl_LIBS
              linker flags for openssl, overriding pkg-config
  icu_CFLAGS  C compiler flags for icu, overriding pkg-config
  icu_LIBS    linker flags for icu, overriding pkg-config
  qt_CFLAGS   C compiler flags for qt, overriding pkg-config
  qt_LIBS     linker flags for qt, overriding pkg-config
  python_CFLAGS
              C compiler flags for python, overriding pkg-config
  python_LIBS linker flags for python, overriding pkg-config

Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.

Report bugs to the package provider.
This is what I've tried:

Code:
[root@host ~]# scl enable devtoolset-7 rh-perl524 rh-python36 bash
[root@host ~]# export LD_LIBRARY_PATH=/opt/icu-57.1/lib:$LD_LIBRARY_PATH
[root@host ~]# export PKG_CONFIG_PATH=/opt/icu-57.1/lib/pkgconfig:$PKG_CONFIG_PATH
[root@host ~]# export CXXFLAGS="-I/opt/icu-57.1/include"
[root@host ~]# export LDFLAGS="-licudata -licui18n -licuio -licule -liculx -licutu -licuuc"
[root@host ~]# cd /opt/znc-1.7.1
[root@host znc-1.7.1]# ./configure --enable-run-from-source --enable-tcl --enable-cyrus --enable-perl --enable-python --enable-charset
checking for g++... g++
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking whether g++ supports C++11 features by default... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking for grep that handles long lines and -e... /bin/grep
checking for a sed that does not truncate output... /bin/sed
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking whether the -Werror option is usable... yes
checking for simple visibility declarations... yes
checking for git... no
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking whether compiler predefines _FORTIFY_SOURCE... no
checking for getopt_long in -lgnugetopt... no
checking for lstat... yes
checking for getopt_long... yes
checking for getpassphrase... no
checking for clock_gettime... no
checking for tcsetattr... yes
checking for library containing dlopen... -ldl
checking for the pthreads library -lpthreads... no
checking whether pthreads work without any flags... no
checking whether pthreads work with -Kthread... no
checking whether pthreads work with -kthread... no
checking for the pthreads library -llthread... no
checking whether pthreads work with -pthread... yes
checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
checking if more special flags are required for pthreads... no
checking for PTHREAD_PRIO_INHERIT... yes
checking whether getaddrinfo() supports AI_ADDRCONFIG... yes
checking for openssl... yes
checking whether openssl is usable... yes
checking whether zlib is usable... yes
checking for icu-uc... yes
checking for Qt5Network >= 5.4... no
checking for SWIG >= 3.0.0...
configure: modperl/modpython files are found, disabling SWIG
configure: modperl/modpython files are found, no SWIG needed
checking for perl... /opt/rh/rh-perl524/root/usr/bin/perl
checking for perl_alloc in -lperl... yes
checking for python3 >= 3.0... yes
checking for Py_Initialize... yes
checking for perl... (cached) /opt/rh/rh-perl524/root/usr/bin/perl
checking for sasl_server_init in -lsasl2... yes
checking for /usr/lib/tclConfig.sh... no
checking for /usr/lib/tcl8.4/tclConfig.sh... no
checking for /usr/lib/tcl8.5/tclConfig.sh... no
checking for /usr/lib/tcl8.6/tclConfig.sh... no
configure: WARNING: Could not find tclConfig.sh, using some sane defaults.
checking for Tcl_CreateInterp... yes
checking for GNU make... /opt/rh/devtoolset-7/root/usr/bin/make
configure: creating ./config.status
config.status: creating Makefile
config.status: creating znc-buildmod
config.status: creating man/Makefile
config.status: creating znc.pc
config.status: creating znc-uninstalled.pc
config.status: creating modules/Makefile
config.status: creating include/znc/zncconfig.h
config.status: include/znc/zncconfig.h is unchanged

ZNC 1.7.1 configured

prefix:       /usr/local
debug:        no
ipv6:         yes
openssl:      yes
dns:          threads
perl:         yes
python:       yes
swig:         not needed
cyrus:        yes
tcl:          yes
charset:      yes
zlib:         yes
run from src: yes

Now you can run "make" to compile ZNC
And it seems that configure no longer complains about not finding icu but there's a compile error which I suspect is due to the header files not being included?

Code:
[root@host znc-1.7.1]# make
Packing man page znc.1.gz...
Packing man page znc-buildmod.1.gz...
Unpacking ZNC Perl bindings...
Building ZNC Perl bindings library...
modperl/modperl_biglib.cpp: In function ‘void _wrap_CMessage_GetParams__SWIG_1(PerlInterpreter*, CV*)’:
modperl/modperl_biglib.cpp:42796:59: warning: ‘CString CMessage::GetParams(unsigned int, unsigned int) const’ is deprecated: Use GetParamsColon() instead [-Wdeprecated-declarations]
     result = ((CMessage const *)arg1)->GetParams(arg2,arg3);
                                                           ^
In file included from ./../include/znc/Modules.h:24:0,
                 from modperl/modperl_biglib.cpp:1779:
./../include/znc/Message.h:127:13: note: declared here
     CString GetParams(unsigned int uIdx, unsigned int uLen = -1) const
             ^~~~~~~~~
modperl/modperl_biglib.cpp: In function ‘void _wrap_CMessage_GetParams__SWIG_2(PerlInterpreter*, CV*)’:
modperl/modperl_biglib.cpp:42836:54: warning: ‘CString CMessage::GetParams(unsigned int, unsigned int) const’ is deprecated: Use GetParamsColon() instead [-Wdeprecated-declarations]
     result = ((CMessage const *)arg1)->GetParams(arg2);
                                                      ^
In file included from ./../include/znc/Modules.h:24:0,
                 from modperl/modperl_biglib.cpp:1779:
./../include/znc/Message.h:127:13: note: declared here
     CString GetParams(unsigned int uIdx, unsigned int uLen = -1) const
             ^~~~~~~~~
At global scope:
cc1plus: warning: unrecognized command line option ‘-Wno-reserved-user-defined-literal’
Building module modperl...
In file included from /opt/rh/rh-perl524/root/usr/lib64/perl5/CORE/perl.h:3905:0,
                 from modperl/module.h:20,
                 from modperl.cpp:25:
/opt/rh/rh-perl524/root/usr/lib64/perl5/CORE/inline.h: In function ‘void S_cx_popsub_args(PerlInterpreter*, PERL_CONTEXT*)’:
/opt/rh/rh-perl524/root/usr/lib64/perl5/CORE/cop.h:612:13: warning: declaration of ‘av’ shadows a previous local [-Wshadow]
         AV *av = GvAV(PL_defgv);                                        \
             ^
/opt/rh/rh-perl524/root/usr/lib64/perl5/CORE/cop.h:612:13: note: in definition of macro ‘CX_POP_SAVEARRAY’
         AV *av = GvAV(PL_defgv);                                        \
             ^~
In file included from /opt/rh/rh-perl524/root/usr/lib64/perl5/CORE/perl.h:5860:0,
                 from modperl/module.h:20,
                 from modperl.cpp:25:
/opt/rh/rh-perl524/root/usr/lib64/perl5/CORE/inline.h:518:9: note: shadowed declaration is here
     AV *av;
         ^~
At global scope:
cc1plus: warning: unrecognized command line option ‘-Wno-reserved-user-defined-literal’
Linking  module modperl...
Linking ZNC Perl bindings library...
Unpacking ZNC python bindings...
Building ZNC python bindings library...
modpython/modpython_biglib.cpp: In function ‘PyObject* _wrap_CMessage_GetParams__SWIG_1(PyObject*, PyObject*)’:
modpython/modpython_biglib.cpp:62750:57: warning: ‘CString CMessage::GetParams(unsigned int, unsigned int) const’ is deprecated: Use GetParamsColon() instead [-Wdeprecated-declarations]
   result = ((CMessage const *)arg1)->GetParams(arg2,arg3);
                                                         ^
In file included from ./../include/znc/Modules.h:24:0,
                 from modpython/modpython_biglib.cpp:3343:
./../include/znc/Message.h:127:13: note: declared here
     CString GetParams(unsigned int uIdx, unsigned int uLen = -1) const
             ^~~~~~~~~
modpython/modpython_biglib.cpp: In function ‘PyObject* _wrap_CMessage_GetParams__SWIG_2(PyObject*, PyObject*)’:
modpython/modpython_biglib.cpp:62781:52: warning: ‘CString CMessage::GetParams(unsigned int, unsigned int) const’ is deprecated: Use GetParamsColon() instead [-Wdeprecated-declarations]
   result = ((CMessage const *)arg1)->GetParams(arg2);
                                                    ^
In file included from ./../include/znc/Modules.h:24:0,
                 from modpython/modpython_biglib.cpp:3343:
./../include/znc/Message.h:127:13: note: declared here
     CString GetParams(unsigned int uIdx, unsigned int uLen = -1) const
             ^~~~~~~~~
Building module modpython...
Linking  module modpython...
Linking ZNC python bindings library...
Building module admindebug...
Linking  module admindebug...
Building module adminlog...
Linking  module adminlog...
Building module alias...
Linking  module alias...
Building module autoattach...
Linking  module autoattach...
Building module autocycle...
Linking  module autocycle...
Building module autoop...
Linking  module autoop...
Building module autoreply...
Linking  module autoreply...
Building module autovoice...
Linking  module autovoice...
Building module awaynick...
Linking  module awaynick...
Building module awaystore...
Linking  module awaystore...
Building module block_motd...
Linking  module block_motd...
Building module blockuser...
Linking  module blockuser...
Building module bouncedcc...
Linking  module bouncedcc...
Building module buffextras...
Linking  module buffextras...
Building module cert...
Linking  module cert...
Building module certauth...
Linking  module certauth...
Building module chansaver...
Linking  module chansaver...
Building module clearbufferonmsg...
Linking  module clearbufferonmsg...
Building module clientnotify...
Linking  module clientnotify...
Building module controlpanel...
Linking  module controlpanel...
Building module crypt...
Linking  module crypt...
Building module ctcpflood...
Linking  module ctcpflood...
Building module cyrusauth...
Linking  module cyrusauth...
Building module dcc...
Linking  module dcc...
Building module disconkick...
Linking  module disconkick...
Building module fail2ban...
Linking  module fail2ban...
Building module flooddetach...
Linking  module flooddetach...
Building module identfile...
Linking  module identfile...
Building module imapauth...
Linking  module imapauth...
Building module keepnick...
Linking  module keepnick...
Building module kickrejoin...
Linking  module kickrejoin...
Building module lastseen...
Linking  module lastseen...
Building module listsockets...
Linking  module listsockets...
Building module log...
Linking  module log...
Building module missingmotd...
Linking  module missingmotd...
Building module modtcl...
Linking  module modtcl...
Building module modules_online...
Linking  module modules_online...
Building module nickserv...
Linking  module nickserv...
Building module notes...
Linking  module notes...
Building module notify_connect...
Linking  module notify_connect...
Building module partyline...
partyline.cpp: In member function ‘virtual CModule::EModRet CPartylineMod::OnNumericMessage(CNumericMessage&)’:
partyline.cpp:209:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             for (int i = 0; i < Msg.GetParams().size(); ++i) {
                             ~~^~~~~~~~~~~~~~~~~~~~~~~~
Linking  module partyline...
Building module perform...
Linking  module perform...
Building module q...
Linking  module q...
Building module raw...
Linking  module raw...
Building module route_replies...
Linking  module route_replies...
Building module sample...
Linking  module sample...
Building module samplewebapi...
Linking  module samplewebapi...
Building module sasl...
Linking  module sasl...
Building module savebuff...
Linking  module savebuff...
Building module schat...
Linking  module schat...
Building module send_raw...
Linking  module send_raw...
Building module shell...
Linking  module shell...
Building module simple_away...
Linking  module simple_away...
Building module stickychan...
Linking  module stickychan...
Building module stripcontrols...
Linking  module stripcontrols...
Building module watch...
Linking  module watch...
Building module webadmin...
Linking  module webadmin...
Building core object main...
src/main.cpp: In member function ‘virtual bool CSignalHandler::CSignalHandlerMonitorFD::FDsThatTriggered(const std::map<int, short int>&)’:
src/main.cpp:188:25: warning: ignoring return value of ‘ssize_t read(int, void*, size_t)’, declared with attribute warn_unused_result [-Wunused-result]
                     read(it.first, &sig, sizeof(sig));
                     ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Building core object ZNCString...
Building core object Csocket...
Building core object znc...
Building core object IRCNetwork...
In file included from ./include/znc/Client.h:24:0,
                 from ./include/znc/znc.h:21,
                 from ./include/znc/IRCNetwork.h:24,
                 from src/IRCNetwork.cpp:17:
src/IRCNetwork.cpp: In member function ‘bool CIRCNetwork::JoinChan(CChan*)’:
./include/znc/main.h:110:9: warning: nonnull argument ‘this’ compared to NULL [-Wnonnull-compare]
         if (macNETWORK != nullptr) {                                          \
         ^
src/IRCNetwork.cpp:993:9: note: in expansion of macro ‘NETWORKMODULECALL’
         NETWORKMODULECALL(OnTimerAutoJoin(*pChan), m_pUser, this, nullptr,
         ^~~~~~~~~~~~~~~~~
./include/znc/main.h:110:9: warning: nonnull argument ‘this’ compared to NULL [-Wnonnull-compare]
         if (macNETWORK != nullptr) {                                          \
         ^
src/IRCNetwork.cpp:981:5: note: in expansion of macro ‘NETWORKMODULECALL’
     NETWORKMODULECALL(OnJoining(*pChan), m_pUser, this, nullptr, &bReturn);
     ^~~~~~~~~~~~~~~~~
src/IRCNetwork.cpp: In member function ‘void CIRCNetwork::ClientConnected(CClient*)’:
./include/znc/main.h:110:9: warning: nonnull argument ‘this’ compared to NULL [-Wnonnull-compare]
         if (macNETWORK != nullptr) {                                          \
         ^
src/IRCNetwork.cpp:716:9: note: in expansion of macro ‘NETWORKMODULECALL’
         NETWORKMODULECALL(OnPrivBufferPlayMessage(Message), m_pUser, this,
         ^~~~~~~~~~~~~~~~~
src/IRCNetwork.cpp: In member function ‘bool CIRCNetwork::Connect()’:
./include/znc/main.h:110:9: warning: nonnull argument ‘this’ compared to NULL [-Wnonnull-compare]
         if (macNETWORK != nullptr) {                                          \
         ^
src/IRCNetwork.cpp:1296:5: note: in expansion of macro ‘NETWORKMODULECALL’
     NETWORKMODULECALL(OnIRCConnecting(pIRCSock), m_pUser, this, nullptr,
     ^~~~~~~~~~~~~~~~~
Building core object User...
In file included from ./include/znc/Client.h:24:0,
                 from ./include/znc/znc.h:21,
                 from ./include/znc/IRCNetwork.h:24,
                 from src/User.cpp:20:
src/User.cpp: In member function ‘bool CUser::DeleteNetwork(const CString&)’:
./include/znc/main.h:85:9: warning: nonnull argument ‘this’ compared to NULL [-Wnonnull-compare]
         if (macUSER != nullptr) {                                           \
         ^
./include/znc/main.h:126:5: note: in expansion of macro ‘_USERMODULECALL’
     _USERMODULECALL(macFUNC, macUSER, nullptr, macCLIENT, macEXITER)
     ^~~~~~~~~~~~~~~
src/User.cpp:550:9: note: in expansion of macro ‘USERMODULECALL’
         USERMODULECALL(OnDeleteNetwork(*pNetwork), this, nullptr, &bCancel);
         ^~~~~~~~~~~~~~
src/User.cpp: In member function ‘CIRCNetwork* CUser::AddNetwork(const CString&, CString&)’:
./include/znc/main.h:85:9: warning: nonnull argument ‘this’ compared to NULL [-Wnonnull-compare]
         if (macUSER != nullptr) {                                           \
         ^
./include/znc/main.h:126:5: note: in expansion of macro ‘_USERMODULECALL’
     _USERMODULECALL(macFUNC, macUSER, nullptr, macCLIENT, macEXITER)
     ^~~~~~~~~~~~~~~
src/User.cpp:518:5: note: in expansion of macro ‘USERMODULECALL’
     USERMODULECALL(OnAddNetwork(*pNetwork, sErrorRet), this, nullptr, &bCancel);
     ^~~~~~~~~~~~~~
Building core object IRCSock...
src/IRCSock.cpp: In member function ‘bool CIRCSock::OnNumericMessage(CNumericMessage&)’:
src/IRCSock.cpp:925:13: warning: this statement may fall through [-Wimplicit-fallthrough=]
             if (m_pNetwork->GetIRCServer().Equals(sServer)) {
             ^~
src/IRCSock.cpp:928:9: note: here
         case 372:  // motd
         ^~~~
src/IRCSock.cpp:938:13: warning: this statement may fall through [-Wimplicit-fallthrough=]
             if (m_pNetwork->IsChan(Message.GetParam(1)) || sNick != "*") break;
             ^~
src/IRCSock.cpp:939:9: note: here
         case 432:
         ^~~~
src/IRCSock.cpp:954:13: warning: this statement may fall through [-Wimplicit-fallthrough=]
             if (sNick.Equals("CAP")) return true;
             ^~
src/IRCSock.cpp:955:9: note: here
         case 470: {
         ^~~~
Building core object Client...
Building core object Chan...
Building core object Nick...
Building core object Server...
Building core object Modules...
Building core object MD5...
Building core object Buffer...
Building core object Utils...
Building core object FileUtils...
Building core object HTTPSock...
Building core object Template...
Building core object ClientCommand...
Building core object Socket...
Building core object SHA256...
Building core object WebModules...
Building core object Listener...
Building core object Config...
Building core object ZNCDebug...
Building core object Threads...
Building core object version...
Building core object Query...
Building core object SSLVerifyHost...
Building core object Message...
Building core object Translation...
Linking znc...
src/Utils.o: In function `CUtils::GetEncodings()':
Utils.cpp:(.text+0x5897): undefined reference to `ucnv_countAvailable_57'
Utils.cpp:(.text+0x58ac): undefined reference to `ucnv_getAvailableName_57'
Utils.cpp:(.text+0x58ef): undefined reference to `vtable for icu_57::ErrorCode'
Utils.cpp:(.text+0x5901): undefined reference to `ucnv_countStandards_57'
Utils.cpp:(.text+0x5918): undefined reference to `ucnv_getStandard_57'
Utils.cpp:(.text+0x5926): undefined reference to `ucnv_openStandardNames_57'
Utils.cpp:(.text+0x5939): undefined reference to `uenum_next_57'
Utils.cpp:(.text+0x59a8): undefined reference to `uenum_close_57'
Utils.cpp:(.text+0x59d2): undefined reference to `icu_57::ErrorCode::~ErrorCode()'
Utils.cpp:(.text+0x59d7): undefined reference to `ucnv_countAvailable_57'
Utils.cpp:(.text+0x5b2a): undefined reference to `icu_57::ErrorCode::~ErrorCode()'
Utils.cpp:(.text+0x5b7a): undefined reference to `uenum_close_57'
src/Csocket.o: In function `Csock::Init(CString const&, unsigned short, int)':
Csocket.cpp:(.text+0x27c7): undefined reference to `ucnv_open_57'
src/Csocket.o: In function `Csock::SetEncoding(CString const&)':
Csocket.cpp:(.text+0x391e): undefined reference to `ucnv_close_57'
Csocket.cpp:(.text+0x3985): undefined reference to `ucnv_open_57'
Csocket.cpp:(.text+0x39bc): undefined reference to `ucnv_setToUCallBack_57'
Csocket.cpp:(.text+0x39da): undefined reference to `ucnv_setFromUCallBack_57'
Csocket.cpp:(.text+0x3aaa): undefined reference to `u_errorName_57'
src/Csocket.o: In function `Csock::PushBuff(char const*, unsigned long, bool)':
Csocket.cpp:(.text+0x5ab8): undefined reference to `u_strFromUTF8_57'
Csocket.cpp:(.text+0x5bb2): undefined reference to `ucnv_convertEx_57'
Csocket.cpp:(.text+0x5def): undefined reference to `u_errorName_57'
Csocket.cpp:(.text+0x60d7): undefined reference to `u_errorName_57'
src/Csocket.o: In function `Csock::~Csock()':
Csocket.cpp:(.text+0x886c): undefined reference to `ucnv_close_57'
Csocket.cpp:(.text+0x887d): undefined reference to `ucnv_close_57'
src/Csocket.o: In function `icuExtFromUCallback(void const*, UConverterFromUnicodeArgs*, unsigned short const*, int, int, UConverterCallbackReason, UErrorCode*)':
Csocket.cpp:(.text+0x6a7): undefined reference to `ucnv_cbFromUWriteSub_57'
src/Csocket.o: In function `icuExtToUCallback(void const*, UConverterToUnicodeArgs*, char const*, int, UConverterCallbackReason, UErrorCode*)':
Csocket.cpp:(.text+0x6f0): undefined reference to `ucnv_cbToUWriteSub_57'
src/Csocket.o: In function `Csock::IcuExtFromUCallback(UConverterFromUnicodeArgs*, unsigned short const*, int, int, UConverterCallbackReason, UErrorCode*)':
Csocket.cpp:(.text+0x719): undefined reference to `ucnv_cbFromUWriteSub_57'
src/Csocket.o: In function `Csock::IcuExtToUCallback(UConverterToUnicodeArgs*, char const*, int, UConverterCallbackReason, UErrorCode*)':
Csocket.cpp:(.text+0x73d): undefined reference to `ucnv_cbToUWriteSub_57'
src/Csocket.o: In function `icuConv(CString const&, CString&, UConverter*, UConverter*)':
Csocket.cpp:(.text._Z7icuConvRK7CStringRS_P10UConverterS4_[_Z7icuConvRK7CStringRS_P10UConverterS4_]+0xcf): undefined reference to `ucnv_convertEx_57'
Csocket.cpp:(.text._Z7icuConvRK7CStringRS_P10UConverterS4_[_Z7icuConvRK7CStringRS_P10UConverterS4_]+0x17d): undefined reference to `u_errorName_57'
Csocket.cpp:(.text._Z7icuConvRK7CStringRS_P10UConverterS4_[_Z7icuConvRK7CStringRS_P10UConverterS4_]+0x2c5): undefined reference to `u_errorName_57'
src/Socket.o: In function `CIRCSocket::IcuExtToUCallback(UConverterToUnicodeArgs*, char const*, int, UConverterCallbackReason, UErrorCode*)':
Socket.cpp:(.text+0x4ffe): undefined reference to `ucnv_cbToUWriteUChars_57'
src/Socket.o: In function `CIRCSocket::IcuExtFromUCallback(UConverterFromUnicodeArgs*, unsigned short const*, int, int, UConverterCallbackReason, UErrorCode*)':
Socket.cpp:(.text+0x5242): undefined reference to `ucnv_cbFromUWriteBytes_57'
collect2: error: ld returned 1 exit status
make: *** [Makefile:97: znc] Error 1
I think it's those compiler flags (CXXFLAGS, etc.) that I need to get right for this to work.

Last edited by E71; 08-16-2018 at 08:38 PM.
 
Old 08-17-2018, 05:19 AM   #4
business_kid
LQ Guru
 
Registered: Jan 2006
Location: Ireland
Distribution: Slackware, Slarm64 & Android
Posts: 16,141

Rep: Reputation: 2307Reputation: 2307Reputation: 2307Reputation: 2307Reputation: 2307Reputation: 2307Reputation: 2307Reputation: 2307Reputation: 2307Reputation: 2307Reputation: 2307
OK, there's no configure option to specify libicu location. No point in copying & pasting huge tailspins. Try to fix it by upgrading your other program that requires icu-4.2.1or downgrading your source. I don't want to waste your time, or mine. I think it's a difficult messy job, and I wouldn't recommend it as an early venture into compiling/linking. It's more for programmers than users.

EDIT: when you're configuring & compiling, the first error is the show stopper. Just chase that, because it causes others.

Last edited by business_kid; 08-17-2018 at 05:21 AM.
 
Old 08-18-2018, 02:28 PM   #5
dedec0
Senior Member
 
Registered: May 2007
Posts: 1,372

Rep: Reputation: 51
Question What command did you use to make this text mode directory listing?

Quote:
Originally Posted by E71 View Post
Edit: Sorry, title should be override, not overwrite.
You can edit the title too! Change it while you can. I think that LQ blocks editing after sometime - something I dislike very much.

Quote:
Originally Posted by E71 View Post
[...]

Directory structure for pre-compiled icu 57.1:

Code:
/opt/icu-57.1/
├── bin
│** ├── derb
│** ├── genbrk
[...]
│** └── uconv
├── include
│** ├── layout
│** │** ├── LayoutEngine.h
│** │** ├── LEFontInstance.h
[...]
│**     └── vtzone.h
├── lib
│** ├── icu
│** │** ├── 57.1
│** │** │** ├── Makefile.inc
│** │** │** └── pkgdata.inc
│** │** ├── current -> 57.1
│** │** ├── Makefile.inc -> current/Makefile.inc
│** │** └── pkgdata.inc -> current/pkgdata.inc
│** ├── libicudata.so -> libicudata.so.57.1
[...]
│** └── icupkg
└── share
    ├── icu
    │** └── 57.1
    │**     ├── config
    │**     │** └── mh-linux
    │**     ├── install-sh
    │**     ├── LICENSE
    │**     └── mkinstalldirs
    └── man
        ├── man1
        │** ├── derb.1
[...]
        │** └── uconv.1
        └── man8
            ├── genccode.8
[...]
            └── icupkg.8

17 directories, 253 files
What command did you use to make this text mode directory listing?

Last edited by dedec0; 08-18-2018 at 02:43 PM.
 
Old 08-18-2018, 02:52 PM   #6
dugan
LQ Guru
 
Registered: Nov 2003
Location: Canada
Distribution: distro hopper
Posts: 11,198

Rep: Reputation: 5307Reputation: 5307Reputation: 5307Reputation: 5307Reputation: 5307Reputation: 5307Reputation: 5307Reputation: 5307Reputation: 5307Reputation: 5307Reputation: 5307
I'd try something like the following:

Code:
CXXFLAGS="-I/opt/icu-57.1/include" \
  LDFLAGS="-L/opt/icu-57.1/lib/icu -Wl,-rpath=/opt/icu-57.1/lib/icu" \
  PATH="/opt/icu-57.1/bin:$PATH" \
  PKG_CONFIG_PATH="/opt/icu-57.1/lib/pkgconfig:$PKG_CONFIG_PATH" \
  ./configure
The main thing that should make a difference is that "-L" is set differently than in your attempt.
 
  


Reply

Tags
centos, compile, icu, includes, libs


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
compiling cant find X includes barrythai SUSE / openSUSE 3 03-04-2005 11:24 AM
Setting up includes and libs for gcc Keenan Linux - Software 1 12-12-2004 12:33 PM
will yum add kernel version or overwrite existing? Kropotkin Fedora 3 11-20-2004 05:10 AM
Problems compiling: Can't find X includes... SAFX Mandriva 13 10-19-2004 11:08 PM
double compiling of certain libs ??????? tuxfood Programming 1 07-20-2004 09:06 AM

LinuxQuestions.org > Forums > Linux Forums > Linux - Software

All times are GMT -5. The time now is 11:27 AM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration