Linux - SoftwareThis 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
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
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
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
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.
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.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.