Configure error c preprocessor lib cpp fails sanity check

Hello, i am using pfsense freebsd 12 system i install gcc and i download the source code of snort and i tried to ./configure . i run: ./configure --host x64 always i get this error: C preprocessor "/lib/cpp" fails sanity check i tried to do same thing with dac and i have same problem too. Thanks.

  • #1

Hello,
i am using pfsense freebsd 12 system
i install gcc and i download the source code of snort and i tried to ./configure .
i run:
./configure —host x64
always i get this error:
C preprocessor «/lib/cpp» fails sanity check
i tried to do same thing with dac and i have same problem too.
Thanks.

  • #2

No comment on pfsense

forums.freebsd.org

GhostBSD, pfSense, TrueNAS, and all other FreeBSD Derivatives

Questions about ‘derivative FreeBSDs’, like GhostBSD DesktopBSD TrueNAS XigmaNAS OPNsense pfSense PacBSD BSD Router Project NomadBSD helloSystem should be asked on the forums and/or mailing lists for these specific products. See below for links. If you still think your questions should be…

forums.freebsd.org


forums.freebsd.org

1. But in FreeBSD, you can install (compile) snort from the Ports Collection.

security/snort

2. FreeBSD uses BSD Toolchain Project.

3. Clang sub-projects from LLVM is the main compiler.

zirias@


  • #3

/lib/cpp

would be a very «strange» location for the preprocessor, it’s typically expected in

/usr/bin/cpp

. So my guess is that your

/lib/cpp

isn’t a preprocessor at all (therefore of course failing a sanity check).

If this file is supposed to exist on pfsense, you should definitely ask in a pfsense forum or the like. It doesn’t exist on FreeBSD.

Deleted member 66267

Guest


  • #4

/lib/cpp

would be a very «strange» location for the preprocessor, it’s typically expected in

/usr/bin/cpp

. So my guess is that your

/lib/cpp

isn’t a preprocessor at all (therefore of course failing a sanity check).

If this file is supposed to exist on pfsense, you should definitely ask in a pfsense forum or the like. It doesn’t exist on FreeBSD.

No. Not strange. It’s a bug of GNU autotools, the configure script looked for the wrong preprocessor location on FreeBSD. The FreeBSD’s cpp is not compatible with the GNU’s cpp either, they together created this mess. I know it because I used to try compiling a GCC based compiler on FreeBSD without using ports and failed with exactly this error. Later I abandon this habit I had when still using Linux and let the ports take care of these. Life is much easier since then.

  • #5

I don’t know about pfSense, but ./configure --host x64 doesn’t look right to me at all, regardless of platform, and you should be aware that typically ./configure by itself will work fine with no need to specify --host=TRIPLET since it should default to the triplet of the machine that is currently running. This is not always true, but specifying an incorrect host triplet and getting it to compile doesn’t mean it will work correctly either.

If ./configure by itself doesn’t work, you will want to use something like (guessing) ./configure --host=amd64-unknown-pfsense; the «Target» output by clang --version may help to point you to the correct host value.

You can also use environment variables to specify locations of some of the necessary programs if they’re installed in strange places, such as in CPP=/path/to/my/cpp ./configure --host=FOO-BAR-BAZ. The command ./configure --help will display the full list.

Deleted member 66267

Guest


  • #6

I don’t know about pfSense, but ./configure --host x64 doesn’t look right to me at all, regardless of platform, and you should be aware that typically ./configure by itself will work fine with no need to specify --host=TRIPLET since it should default to the triplet of the machine that is currently running. This is not always true, but specifying an incorrect host triplet and getting it to compile doesn’t mean it will work correctly either.

If ./configure by itself doesn’t work, you will want to use something like (guessing) ./configure --host=amd64-unknown-pfsense; the «Target» output by clang --version may help to point you to the correct host value.

You can also use environment variables to specify locations of some of the necessary programs if they’re installed in strange places, such as in CPP=/path/to/my/cpp ./configure --host=FOO-BAR-BAZ. The command ./configure --help will display the full list.

The problems is actually down to autotools and the configure script. FreeBSD’s cpp is not compatible with GNU’s cpp. But even when we specify the correct path to GNU’s cpp via the CPP environment variable, the configure script still not pick it up and complains with the same error. At least with my case. I have no workaround for this so far.

  • #7

After more investigation, the problem seems to be the fact that pfSense doesn’t offer a typical compilation environment like FreeBSD does, so the search for a C preprocessor fails. Differences like this are why FreeBSD derivatives aren’t supported here.

The problems is actually down to autotools and the configure script. FreeBSD’s cpp is not compatible with GNU’s cpp. But even when we specify the correct path to GNU’s cpp via the CPP environment variable, the configure script still not pick it up and complains with the same error. At least with my case. I have no workaround for this so far.

I understand that FreeBSD’s cpp (clang) is not 100% compatible with GNU’s cpp, but specifying the path to GNU cpp should work. I’ve also used something like CPP='gcc9 -E' on some occasions. Another possibility is the configure script or supporting files are outdated. If you suspect that might be the case, and you have Autoconf and Perl installed, you can make a copy of the source directory and run autoreconf -i in that directory.

Deleted member 66267

Guest


  • #8

I understand that FreeBSD’s cpp (clang) is not 100% compatible with GNU’s cpp, but specifying the path to GNU cpp should work. I’ve also used something like CPP='gcc9 -E' on some occasions. Another possibility is the configure script or supporting files are outdated. If you suspect that might be the case, and you have Autoconf and Perl installed, you can make a copy of the source directory and run autoreconf -i in that directory.

Ah, I did set the CPP environment variable but to GNU’s cpp I installed together with the gcc package, not to ‘gcc9 -E’ like you. This could be the reason why it doesn’t work for me.

cpp3.2 и gcc3.2 у меня стоят, а что такое g++ я не знаю.

Вот полная версия config.log:

This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by Wine configure 20050524, which was
generated by GNU Autoconf 2.59. Invocation command line was

$ ./configure -C —prefix=/usr/local

## ——— ##
## Platform. ##
## ——— ##

hostname = localhost.localdomain
uname -m = i686
uname -r = 2.4.22-std-up-alt17
uname -s = Linux
uname -v = #1 Wed Feb 4 22:52:03 MSK 2004

/usr/bin/uname -p = unknown
/bin/uname -X = unknown

/bin/arch = i686
/usr/bin/arch -k = unknown
/usr/convex/getsysinfo = unknown
hostinfo = unknown
/bin/machine = unknown
/usr/bin/oslevel = unknown
/bin/universe = unknown

PATH: /home/directz/bin
PATH: /bin
PATH: /usr/bin
PATH: /usr/X11R6/bin
PATH: /usr/local/bin
PATH: /usr/games

## ———— ##
## Core tests. ##
## ———— ##

configure:1249: creating cache config.cache
configure:1424: checking build system type
configure:1442: result: i686-pc-linux-gnu
configure:1450: checking host system type
configure:1464: result: i686-pc-linux-gnu
configure:1504: checking whether make sets $(MAKE)
configure:1524: result: yes
configure:1579: checking for gcc
configure:1595: found /usr/bin/gcc
configure:1605: result: gcc
configure:1849: checking for C compiler version
configure:1852: gcc —version </dev/null >&5
i586-alt-linux-gcc (GCC) 3.2.3 (ALT Linux, build 3.2.3-alt2)
Copyright © 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

configure:1855: $? = 0
configure:1857: gcc -v </dev/null >&5
Reading specs from /usr/lib/gcc-lib/i586-alt-linux/3.2.3/specs
Configured with: ../configure —prefix=/usr —libdir=/usr/lib —with-slibdir=/lib —mandir=/usr/share/man —infodir=/usr/share/info —enable-shared —enable-threads=posix —disable-checking —enable-long-long —enable-__cxa_atexit —enable-languages=c,c++,f77,objc,java —program-suffix=-3.2 —enable-objc-gc —with-system-zlib —without-included-gettext —host=i586-alt-linux —build=i586-alt-linux —target=i586-alt-linux
Thread model: posix
gcc version 3.2.3 (ALT Linux, build 3.2.3-alt2)
configure:1860: $? = 0
configure:1862: gcc -V </dev/null >&5
i586-alt-linux-gcc: argument to `-V’ is missing
configure:1865: $? = 1
configure:1888: checking for C compiler default output file name
configure:1891: gcc conftest.c >&5
configure:1894: $? = 0
configure:1940: result: a.out
configure:1945: checking whether the C compiler works
configure:1951: ./a.out
configure:1954: $? = 0
configure:1971: result: yes
configure:1978: checking whether we are cross compiling
configure:1980: result: no
configure:1983: checking for suffix of executables
configure:1985: gcc -o conftest conftest.c >&5
configure:1988: $? = 0
configure:2013: result:
configure:2019: checking for suffix of object files
configure:2040: gcc -c conftest.c >&5
configure:2043: $? = 0
configure:2065: result: o
configure:2069: checking whether we are using the GNU C compiler
configure:2093: gcc -c conftest.c >&5
configure:2099: $? = 0
configure:2102: test -z || test ! -s conftest.err
configure:2105: $? = 0
configure:2108: test -s conftest.o
configure:2111: $? = 0
configure:2124: result: yes
configure:2130: checking whether gcc accepts -g
configure:2151: gcc -c -g conftest.c >&5
configure:2157: $? = 0
configure:2160: test -z || test ! -s conftest.err
configure:2163: $? = 0
configure:2166: test -s conftest.o
configure:2169: $? = 0
configure:2180: result: yes
configure:2197: checking for gcc option to accept ANSI C
configure:2267: gcc -c -g -O2 conftest.c >&5
configure:2273: $? = 0
configure:2276: test -z || test ! -s conftest.err
configure:2279: $? = 0
configure:2282: test -s conftest.o
configure:2285: $? = 0
configure:2303: result: none needed
configure:2321: gcc -c -g -O2 conftest.c >&5
conftest.c:2: syntax error before «me»
configure:2327: $? = 1
configure: failed program was:
| #ifndef __cplusplus
| choke me
| #endif
configure:2509: checking for g++
configure:2525: found /usr/bin/g++
configure:2535: result: g++
configure:2551: checking for C++ compiler version
configure:2554: g++ —version </dev/null >&5
/usr/bin/i586-alt-linux-g++: No such file or directory
configure:2557: $? = 1
configure:2559: g++ -v </dev/null >&5
/usr/bin/i586-alt-linux-g++: No such file or directory
configure:2562: $? = 1
configure:2564: g++ -V </dev/null >&5
/usr/bin/i586-alt-linux-g++: No such file or directory
configure:2567: $? = 1
configure:2570: checking whether we are using the GNU C++ compiler
configure:2594: g++ -c conftest.cc >&5
/usr/bin/i586-alt-linux-g++: No such file or directory
configure:2600: $? = 1
configure: failed program was:
| /* confdefs.h. */
|
| #define PACKAGE_NAME «Wine»
| #define PACKAGE_TARNAME «wine»
| #define PACKAGE_VERSION «20050524»
| #define PACKAGE_STRING «Wine 20050524»
| #define PACKAGE_BUGREPORT «wine-devel@winehq.org»
| /* end confdefs.h. */
|
| int
| main ()
| {
| #ifndef __GNUC__
| choke me
| #endif
|
| ;
| return 0;
| }
configure:2625: result: no
configure:2631: checking whether g++ accepts -g
configure:2652: g++ -c -g conftest.cc >&5
/usr/bin/i586-alt-linux-g++: No such file or directory
configure:2658: $? = 1
configure: failed program was:
| /* confdefs.h. */
|
| #define PACKAGE_NAME «Wine»
| #define PACKAGE_TARNAME «wine»
| #define PACKAGE_VERSION «20050524»
| #define PACKAGE_STRING «Wine 20050524»
| #define PACKAGE_BUGREPORT «wine-devel@winehq.org»
| /* end confdefs.h. */
|
| int
| main ()
| {
|
| ;
| return 0;
| }
configure:2681: result: no
configure:2723: g++ -c conftest.cc >&5
/usr/bin/i586-alt-linux-g++: No such file or directory
configure:2729: $? = 1
configure: failed program was:
| /* confdefs.h. */
|
| #define PACKAGE_NAME «Wine»
| #define PACKAGE_TARNAME «wine»
| #define PACKAGE_VERSION «20050524»
| #define PACKAGE_STRING «Wine 20050524»
| #define PACKAGE_BUGREPORT «wine-devel@winehq.org»
| /* end confdefs.h. */
|
| #include <stdlib.h>
| int
| main ()
| {
| exit (42);
| ;
| return 0;
| }
configure:2723: g++ -c conftest.cc >&5
/usr/bin/i586-alt-linux-g++: No such file or directory
configure:2729: $? = 1
configure: failed program was:
| /* confdefs.h. */
|
| #define PACKAGE_NAME «Wine»
| #define PACKAGE_TARNAME «wine»
| #define PACKAGE_VERSION «20050524»
| #define PACKAGE_STRING «Wine 20050524»
| #define PACKAGE_BUGREPORT «wine-devel@winehq.org»
| /* end confdefs.h. */
| extern «C» void std::exit (int) throw (); using std::exit;
| #include <stdlib.h>
| int
| main ()
| {
| exit (42);
| ;
| return 0;
| }
configure:2723: g++ -c conftest.cc >&5
/usr/bin/i586-alt-linux-g++: No such file or directory
configure:2729: $? = 1
configure: failed program was:
| /* confdefs.h. */
|
| #define PACKAGE_NAME «Wine»
| #define PACKAGE_TARNAME «wine»
| #define PACKAGE_VERSION «20050524»
| #define PACKAGE_STRING «Wine 20050524»
| #define PACKAGE_BUGREPORT «wine-devel@winehq.org»
| /* end confdefs.h. */
| extern «C» void std::exit (int); using std::exit;
| #include <stdlib.h>
| int
| main ()
| {
| exit (42);
| ;
| return 0;
| }
configure:2723: g++ -c conftest.cc >&5
/usr/bin/i586-alt-linux-g++: No such file or directory
configure:2729: $? = 1
configure: failed program was:
| /* confdefs.h. */
|
| #define PACKAGE_NAME «Wine»
| #define PACKAGE_TARNAME «wine»
| #define PACKAGE_VERSION «20050524»
| #define PACKAGE_STRING «Wine 20050524»
| #define PACKAGE_BUGREPORT «wine-devel@winehq.org»
| /* end confdefs.h. */
| extern «C» void exit (int) throw ();
| #include <stdlib.h>
| int
| main ()
| {
| exit (42);
| ;
| return 0;
| }
configure:2723: g++ -c conftest.cc >&5
/usr/bin/i586-alt-linux-g++: No such file or directory
configure:2729: $? = 1
configure: failed program was:
| /* confdefs.h. */
|
| #define PACKAGE_NAME «Wine»
| #define PACKAGE_TARNAME «wine»
| #define PACKAGE_VERSION «20050524»
| #define PACKAGE_STRING «Wine 20050524»
| #define PACKAGE_BUGREPORT «wine-devel@winehq.org»
| /* end confdefs.h. */
| extern «C» void exit (int);
| #include <stdlib.h>
| int
| main ()
| {
| exit (42);
| ;
| return 0;
| }
configure:2723: g++ -c conftest.cc >&5
/usr/bin/i586-alt-linux-g++: No such file or directory
configure:2729: $? = 1
configure: failed program was:
| /* confdefs.h. */
|
| #define PACKAGE_NAME «Wine»
| #define PACKAGE_TARNAME «wine»
| #define PACKAGE_VERSION «20050524»
| #define PACKAGE_STRING «Wine 20050524»
| #define PACKAGE_BUGREPORT «wine-devel@winehq.org»
| /* end confdefs.h. */
| void exit (int);
| #include <stdlib.h>
| int
| main ()
| {
| exit (42);
| ;
| return 0;
| }
configure:2849: checking for cpp
configure:2865: found /usr/bin/cpp
configure:2876: result: cpp
configure:2889: checking for the directory containing the Wine tools
configure:2913: result: $(TOPOBJDIR)
configure:2924: checking how to run the C preprocessor
configure:2959: gcc -E conftest.c
In file included from /usr/include/bits/posix1_lim.h:126,
from /usr/include/limits.h:144,
from /usr/lib/gcc-lib/i586-alt-linux/3.2.3/include/limits.h:132,
from /usr/lib/gcc-lib/i586-alt-linux/3.2.3/include/syslimits.h:7,
from /usr/lib/gcc-lib/i586-alt-linux/3.2.3/include/limits.h:11,
from conftest.c:13:
/usr/include/bits/local_lim.h:36:26: linux/limits.h: No such file or directory
configure:2965: $? = 1
configure: failed program was:
| /* confdefs.h. */
|
| #define PACKAGE_NAME «Wine»
| #define PACKAGE_TARNAME «wine»
| #define PACKAGE_VERSION «20050524»
| #define PACKAGE_STRING «Wine 20050524»
| #define PACKAGE_BUGREPORT «wine-devel@winehq.org»
| #ifdef __cplusplus
| void exit (int);
| #endif
| /* end confdefs.h. */
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| Syntax error
configure:2959: gcc -E conftest.c
In file included from /usr/include/bits/posix1_lim.h:126,
from /usr/include/limits.h:144,
from /usr/lib/gcc-lib/i586-alt-linux/3.2.3/include/limits.h:132,
from /usr/lib/gcc-lib/i586-alt-linux/3.2.3/include/syslimits.h:7,
from /usr/lib/gcc-lib/i586-alt-linux/3.2.3/include/limits.h:11,
from conftest.c:13:
/usr/include/bits/local_lim.h:36:26: linux/limits.h: No such file or directory
configure:2965: $? = 1
configure: failed program was:
| /* confdefs.h. */
|
| #define PACKAGE_NAME «Wine»
| #define PACKAGE_TARNAME «wine»
| #define PACKAGE_VERSION «20050524»
| #define PACKAGE_STRING «Wine 20050524»
| #define PACKAGE_BUGREPORT «wine-devel@winehq.org»
| #ifdef __cplusplus
| void exit (int);
| #endif
| /* end confdefs.h. */
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| Syntax error
configure:2959: gcc -E -traditional-cpp conftest.c
/usr/include/sys/cdefs.h:31: #error «You need a ISO C conforming compiler to use the glibc headers»
configure:2965: $? = 1
configure: failed program was:
| /* confdefs.h. */
|
| #define PACKAGE_NAME «Wine»
| #define PACKAGE_TARNAME «wine»
| #define PACKAGE_VERSION «20050524»
| #define PACKAGE_STRING «Wine 20050524»
| #define PACKAGE_BUGREPORT «wine-devel@winehq.org»
| #ifdef __cplusplus
| void exit (int);
| #endif
| /* end confdefs.h. */
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| Syntax error
configure:2959: gcc -E -traditional-cpp conftest.c
/usr/include/sys/cdefs.h:31: #error «You need a ISO C conforming compiler to use the glibc headers»
configure:2965: $? = 1
configure: failed program was:
| /* confdefs.h. */
|
| #define PACKAGE_NAME «Wine»
| #define PACKAGE_TARNAME «wine»
| #define PACKAGE_VERSION «20050524»
| #define PACKAGE_STRING «Wine 20050524»
| #define PACKAGE_BUGREPORT «wine-devel@winehq.org»
| #ifdef __cplusplus
| void exit (int);
| #endif
| /* end confdefs.h. */
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| Syntax error
configure:2959: /lib/cpp conftest.c
In file included from /usr/include/bits/posix1_lim.h:126,
from /usr/include/limits.h:144,
from /usr/lib/gcc-lib/i586-alt-linux/3.2.3/include/limits.h:132,
from /usr/lib/gcc-lib/i586-alt-linux/3.2.3/include/syslimits.h:7,
from /usr/lib/gcc-lib/i586-alt-linux/3.2.3/include/limits.h:11,
from conftest.c:13:
/usr/include/bits/local_lim.h:36:26: linux/limits.h: No such file or directory
configure:2965: $? = 1
configure: failed program was:
| /* confdefs.h. */
|
| #define PACKAGE_NAME «Wine»
| #define PACKAGE_TARNAME «wine»
| #define PACKAGE_VERSION «20050524»
| #define PACKAGE_STRING «Wine 20050524»
| #define PACKAGE_BUGREPORT «wine-devel@winehq.org»
| #ifdef __cplusplus
| void exit (int);
| #endif
| /* end confdefs.h. */
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| Syntax error
configure:2959: /lib/cpp conftest.c
In file included from /usr/include/bits/posix1_lim.h:126,
from /usr/include/limits.h:144,
from /usr/lib/gcc-lib/i586-alt-linux/3.2.3/include/limits.h:132,
from /usr/lib/gcc-lib/i586-alt-linux/3.2.3/include/syslimits.h:7,
from /usr/lib/gcc-lib/i586-alt-linux/3.2.3/include/limits.h:11,
from conftest.c:13:
/usr/include/bits/local_lim.h:36:26: linux/limits.h: No such file or directory
configure:2965: $? = 1
configure: failed program was:
| /* confdefs.h. */
|
| #define PACKAGE_NAME «Wine»
| #define PACKAGE_TARNAME «wine»
| #define PACKAGE_VERSION «20050524»
| #define PACKAGE_STRING «Wine 20050524»
| #define PACKAGE_BUGREPORT «wine-devel@winehq.org»
| #ifdef __cplusplus
| void exit (int);
| #endif
| /* end confdefs.h. */
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| Syntax error
configure:3042: result: /lib/cpp
configure:3066: /lib/cpp conftest.c
In file included from /usr/include/bits/posix1_lim.h:126,
from /usr/include/limits.h:144,
from /usr/lib/gcc-lib/i586-alt-linux/3.2.3/include/limits.h:132,
from /usr/lib/gcc-lib/i586-alt-linux/3.2.3/include/syslimits.h:7,
from /usr/lib/gcc-lib/i586-alt-linux/3.2.3/include/limits.h:11,
from conftest.c:13:
/usr/include/bits/local_lim.h:36:26: linux/limits.h: No such file or directory
configure:3072: $? = 1
configure: failed program was:
| /* confdefs.h. */
|
| #define PACKAGE_NAME «Wine»
| #define PACKAGE_TARNAME «wine»
| #define PACKAGE_VERSION «20050524»
| #define PACKAGE_STRING «Wine 20050524»
| #define PACKAGE_BUGREPORT «wine-devel@winehq.org»
| #ifdef __cplusplus
| void exit (int);
| #endif
| /* end confdefs.h. */
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| Syntax error
configure:3066: /lib/cpp conftest.c
In file included from /usr/include/bits/posix1_lim.h:126,
from /usr/include/limits.h:144,
from /usr/lib/gcc-lib/i586-alt-linux/3.2.3/include/limits.h:132,
from /usr/lib/gcc-lib/i586-alt-linux/3.2.3/include/syslimits.h:7,
from /usr/lib/gcc-lib/i586-alt-linux/3.2.3/include/limits.h:11,
from conftest.c:13:
/usr/include/bits/local_lim.h:36:26: linux/limits.h: No such file or directory
configure:3072: $? = 1
configure: failed program was:
| /* confdefs.h. */
|
| #define PACKAGE_NAME «Wine»
| #define PACKAGE_TARNAME «wine»
| #define PACKAGE_VERSION «20050524»
| #define PACKAGE_STRING «Wine 20050524»
| #define PACKAGE_BUGREPORT «wine-devel@winehq.org»
| #ifdef __cplusplus
| void exit (int);
| #endif
| /* end confdefs.h. */
| #ifdef __STDC__
| # include <limits.h>
| #else
| # include <assert.h>
| #endif
| Syntax error
configure:3141: error: C preprocessor «/lib/cpp» fails sanity check
See `config.log’ for more details.

## —————- ##
## Cache variables. ##
## —————- ##

ac_cv_build=i686-pc-linux-gnu
ac_cv_build_alias=i686-pc-linux-gnu
ac_cv_c_compiler_gnu=yes
ac_cv_cxx_compiler_gnu=no
ac_cv_env_CC_set=
ac_cv_env_CC_value=
ac_cv_env_CFLAGS_set=
ac_cv_env_CFLAGS_value=
ac_cv_env_CPPFLAGS_set=
ac_cv_env_CPPFLAGS_value=
ac_cv_env_CPP_set=
ac_cv_env_CPP_value=
ac_cv_env_CXXFLAGS_set=
ac_cv_env_CXXFLAGS_value=
ac_cv_env_CXX_set=
ac_cv_env_CXX_value=
ac_cv_env_LDFLAGS_set=
ac_cv_env_LDFLAGS_value=
ac_cv_env_build_alias_set=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=
ac_cv_env_host_alias_value=
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=
ac_cv_exeext=
ac_cv_host=i686-pc-linux-gnu
ac_cv_host_alias=i686-pc-linux-gnu
ac_cv_objext=o
ac_cv_prog_CPP=/lib/cpp
ac_cv_prog_ac_ct_CC=gcc
ac_cv_prog_ac_ct_CPPBIN=cpp
ac_cv_prog_ac_ct_CXX=g++
ac_cv_prog_cc_g=yes
ac_cv_prog_cc_stdc=
ac_cv_prog_cxx_g=no
ac_cv_prog_make_make_set=yes
wine_cv_toolsdir=’$(TOPOBJDIR)’

## —————— ##
## Output variables. ##
## —————— ##

ALLOCA=»
ALSALIBS=»
AR=»
ARTSCCONFIG=»
ARTSINCL=»
ARTSLIBS=»
AS=»
AUDIOIOLIBS=»
BISON=»
CC=’gcc’
CFLAGS=’-g -O2′
COREFOUNDATIONLIB=»
CPP=’/lib/cpp’
CPPBIN=’cpp’
CPPFLAGS=»
CROSSCC=»
CROSSTEST=»
CROSSWINDRES=»
CRTLIBS=»
CURSESLIBS=»
CXX=’g++’
CXXFLAGS=»
DEFS=»
DLLDEFS=»
DLLEXT=»
DLLFLAGS=»
DLLIBS=»
DLLTOOL=»
DLLWRAP=»
ECHO_C=»
ECHO_N=’-n’
ECHO_T=»
EGREP=»
EXEEXT=»
EXTRACFLAGS=»
FONTFORGE=»
FONTSSUBDIRS=»
FREETYPEINCL=»
FREETYPELIBS=»
GLU32FILES=»
GLUT32FILES=»
GLUT_LIBS=»
ICULIBS=»
IMPLIBEXT=»
INSTALL_DATA=»
INSTALL_PROGRAM=»
INSTALL_SCRIPT=»
IOKITLIB=»
LD=»
LDCONFIG=»
LDD=»
LDDLLFLAGS=»
LDEXECFLAGS=»
LDFLAGS=»
LDLIBWINEFLAGS=»
LDPATH=»
LDSHARED=»
LEX=»
LEXLIB=»
LEX_OUTPUT_ROOT=»
LIBEXT=»
LIBOBJS=»
LIBPTHREAD=»
LIBS=»
LINT=»
LINTFLAGS=»
LN=»
LN_S=»
LTLIBOBJS=»
MAIN_BINARY=»
NASLIBS=»
OBJEXT=’o’
OPENGLFILES=»
OPENGL_LIBS=»
PACKAGE_BUGREPORT=’wine-devel@winehq.org’
PACKAGE_NAME=’Wine’
PACKAGE_STRING=’Wine 20050524′
PACKAGE_TARNAME=’wine’
PACKAGE_VERSION=’20050524′
PATH_SEPARATOR=’:’
RANLIB=»
SANEINCL=»
SANELIBS=»
SET_MAKE=»
SHELL=’/bin/sh’
SOCKETLIBS=»
STRIP=»
TOOLSDIR=’$(TOPOBJDIR)’
WIN16_FILES=’$(WIN16_FILES)’
WIN16_INSTALL=’$(WIN16_INSTALL)’
WINDRES=»
WINE_BINARIES=»
XFILES=»
XLEX=»
XLIB=»
X_CFLAGS=»
X_EXTRA_LIBS=»
X_LIBS=»
X_PRE_LIBS=»
ac_ct_AR=»
ac_ct_AS=»
ac_ct_CC=’gcc’
ac_ct_CPPBIN=’cpp’
ac_ct_CXX=’g++’
ac_ct_DLLTOOL=»
ac_ct_DLLWRAP=»
ac_ct_LD=»
ac_ct_RANLIB=»
ac_ct_STRIP=»
ac_ct_WINDRES=»
bindir=’${exec_prefix}/bin’
build=’i686-pc-linux-gnu’
build_alias=»
build_cpu=’i686′
build_os=’linux-gnu’
build_vendor=’pc’
datadir=’${prefix}/share’
exec_prefix=’NONE’
ft_devel2=»
ft_devel=»
host=’i686-pc-linux-gnu’
host_alias=»
host_cpu=’i686′
host_os=’linux-gnu’
host_vendor=’pc’
includedir=’${prefix}/include’
infodir=’${prefix}/info’
libdir=’${exec_prefix}/lib’
libexecdir=’${exec_prefix}/libexec’
localstatedir=’${prefix}/var’
mandir=’${prefix}/man’
oldincludedir=’/usr/include’
prefix=’/usr/local’
program_transform_name=’s,x,x,’
sane_devel=»
sbindir=’${exec_prefix}/sbin’
sharedstatedir=’${prefix}/com’
sysconfdir=’${prefix}/etc’
target_alias=»

## ————- ##
## Output files. ##
## ————- ##

MAKE_DLL_RULES=»
MAKE_LIB_RULES=»
MAKE_PROG_RULES=»
MAKE_RULES=»
MAKE_TEST_RULES=»

## ———— ##
## confdefs.h. ##
## ———— ##

#define PACKAGE_BUGREPORT «wine-devel@winehq.org»
#define PACKAGE_NAME «Wine»
#define PACKAGE_STRING «Wine 20050524»
#define PACKAGE_TARNAME «wine»
#define PACKAGE_VERSION «20050524»
#endif
#ifdef __cplusplus
void exit (int);

configure: exit 1

Я здесь ничего не понимаю.

Иногда стандартная последовательность для компиляции программы не работает. Она начинает выводить различные ошибки и не компилирует программу. Что в таком случае делать? В этой статье описано как избавиться от множества часто встречающихся ошибок.


Внимание: В этой статье подразумевается, что у вас уже есть некоторое количество знаний в области работы с командной строкой и вы знаете как работать с менеджером пакетов вашего дистрибутива.

Мы можем разделить ошибки на три категории:

  • Ошибки при выполнении команды ./configure

  • Ошибки при выполнении команды make

  • Ошибки при выполнении команды make install

Очевидно, что ошибки при выполнении команды ./configure, возникают во время выполнения скрипта конфигурации, ошибки при выполнении команды make возникают во время выполнения команды make, а ошибки при выполнении команды make install, соответственно, возникают при выполнении команды make install. Далее будет представлен лист типичных ошибок и способ их решения, разделенный на эти три категории.


Ошибки при выполнении команды ./configure

Следующий список содержит некоторые общие ошибки, которые может выдать каманда ./configure. Ошибки отсортированы по частоте возникновения. Сначала наиболее часто встречающиеся. Вещи между ( и ) являются опциональными, они могут не появлятся. OR, выделенное жирным курсивом означает, что несколько ошибок имеют одно решение. Текст между < и > показывает тип строки, которая должна появиться в этом месте.

  1. (configure:) (error:) <somename> (<someversion> (or higher)) not found. (Please check your installation!) OR checking for <somename>… (configure:) (error:) not found. OR (configure:) (error:) <somename> (<someversion> (or newer)) is required to build <package-you’re-trying-to-compile>

    • Это обычно означает что -dev или -devel версия пакета ,который называется <somename> не установлена у вас на компьютере. Используйте менеджер пакетов вашего дистрибутива (или любой другой способ найти и установить пакет), чтобы найти пакет <somename> и установить его, если это возможно, -dev или -devel версию. Если -dev или -devel версия уже установлена, или её не сущечтвует, посмотрете на версию уже установленной. Она достаточно новая? Если она ниже, чем <someversion>, попробуйте обновить пакет. Если обновить пакет не представляется возможным, вы можете попробовать скомпилировать более мтарую версию программы. Более старые версии обычно используют более старые версии библиотек и программ, необходимых для компиляции.

  2. (configure:) (error:) cannot find header (file) <somename>.h OR (configure:) (error:) (header) (file) <somename>.h missing! OR <similar>

    • Конфигурационный скрипт не может найти .h файл, необходимый для компиляции. Эта ошибка похожа на предыдущую, в которой необходимо установить -dev или -devel версию пакета. Однако, обычно не понятно какой пакет нужно установить для решения этой проблемы, так как <somename> может быть очень общим названием. Попробуйте поискать в интернетет <somename>.h, чтобы узнать в каком пакете этот файл находится, а затем установите этот пакет (и его -dev или -devel версия, если это возможно) с помощью менеджера пакетов вашего дистрибутива.

  3. (configure:) (error:) no acceptable cc found in <somedirectories>

    • Вы используете для установки компилятор gcc, А переменная окружения CC отсутствует или не установлена. Убедитесь, что пакет gcc установлен, используя менеджер пакетов вашего дистрибутива. Если этот пакет не установлен, установите его. Если он установлен, попробуйте выполнить следующую команду:

      [rechosen@localhost ~]$ export CC=»/usr/bin/cc»

      Если это помогло, вы можете добавить эту команду в /etc/profile (это файл, содержащий команды, которые выполняются когда пользователь входит в систему) и тогда вам не придется набирать её снова.

  4. (configure:) (error:) C++ preprocessor «/lib/cpp» fails sanity check

    • Ваш пакет g++ отсутствует или поврежден. Используйте Используйте менеджер пакетов вашего дистрибутива (или любой другой способ найти и установить пакет), чтобы найти пакет g++ и установить его. Не забудьте, что в некоторых дистрибутивах этот пакет называется не g++. Fedora, например, использует название gcc-c++ в соем репозитарии yum. Если вы не можете найти g++, попробуйте поискать c++, cpp или gcc.

  5. (configure:) (error:) C++ preprocessor «CC (-E)» fails sanity check

    • Эта ошибка вызвана странным «багом» в некоторых версиях библиотеки libtool, которая заставляет конфигурационный скрипт проверять все компиляторы поддерживающиеся libtool. Наиболее простое решение — установить g++.


Ошибки при выполнении команды make

Так как ошибки при выполнении команды make обычно очень специфичны, я дам список основных вещей, которые могут помочь:

  • Если вы компилируете программу с использованием gcc 4 (используйте gcc -dumpversion чтобы это выяснить), попробуйте использовать более старые версии компилятора. Сначала убедитесь, что у вас установлена более старая версия. Обычно это можно узнать, использовав следующую команду:

    [rechosen@localhost ~]$ ls /usr/bin/gcc*

    Если она вернет что-то вроде этого:

    /usr/bin/gcc /usr/bin/gcc32

    То можете использовать команды gcc32, чтобы скомпилировать программу в более ранними версиями gcc. Если команда не вернет подобной строки, то используя менеджер пакетов вашего дистрибутива, найдите и установите более ранние версии gcc (обычно они называются compat-gcc или gcc-<versionnumber>). После установки, вам должна быть доступна альтернативная версия gcc. Её можно найти используя команду ls. Заставить команды ./configure, make и make install использовать более старую версию gcc можно так:

    [rechosen@localhost ~]$ CC=»/usr/bin/gcc32″ ./configure
    [rechosen@localhost ~]$ CC=»/usr/bin/gcc32″ make
    [rechosen@localhost ~]$ CC=»/usr/bin/gcc32″ make install

    Конечно путь /usr/bin/gcc32 надо заменить на тот, по которому у вас находится альтернативная версия gcc.

  • Иногда ошибки могут вызваны простым «багом» программы. Попробуйте скачать последнюю версию программы (используя её cvs, svn или другой репозитарий, или скачав последний снимок) и скомпилируйте её, возможно эта ошибка уже исправлена.

  • Ошибка при выполнении комадны make может быть также вызвана неправильной версией необходимой библиотеки или программы. Эта проблема часто встречается для очень новых или очень старых пакетов. Проверьте зависимости пакета (они обчно написаны на сайте программы) и сравните номера версий с версиями, установленными у вас на компьютере (их обчно можно посмотреть, используя менеджер пакетов вашего дистрибутива). Если номер версии в вашей системе больше того, которые написан на сайте, возможно вы пытаетесь скомпилировать очень старый пакет. Если вам дейсвительно необходимо его скомпилировать, попробуйте установить более старые версии зависимых пакетов.Как бы то небыло, обычно лучше поискать другой способ установки этого пакета или поискать альтернативу. Если номер версии в системе меньше, чем на сайте, вы можете попробовать обновить соответствующий пакет.Вы можетепопробовать обновить требуемую библиотеку или скомпилировать более старую весию программы.Так же проверьте, может уже есть этот пакет, скомпилированный для авшего дистрибутива. Его установка, обычно, проще, чем исправление ошибок компиляции.

  • Другая вещь, которую стоит попробовать — это поиск специфической ошибки в интернете. Если вы не нашли ничего полезного, попробуйте убрать такие вещи, как номер строки (он может измениться с новой версией), номер версии (его можно заменить звездочкой, если он содержится в названии программы) и специальные символы, такие как кавычки, так как они влияют на поисковый сервис. Обычно можно найти много информации в листе рассылок. Иногда выходит патч, который исправляет ошибки в исходном коде. Его можно применить слудеющим образом:

    [rechosen@localhost ~]$ patch -Np1 <patchfile>

    Не забудьте: чтобы применить патч, текущей должна быть директория с исходными текстами.


Ошибки при выполнении команды make install

Эти ошибки обычно легко понять, но я все равно про них напишу. Есть два наиболее частых случая, почему команда make install возвращает ошибку:

  • У вас нет прав пользователя root. Попробуйте выполнить команду make install, используя команду sudo, или станеть пользователем root, используя команду su. Команда sudo применяется следующим образом:

    [rechosen@localhost ~]$ sudo make install

    Она спросит пароль; обычно используется собственный пароль или пароль пользователя root. Вы можете испльзовать команду su, чтобы стать польpователем root:

    [rechosen@localhost ~]$ su

    Эта команда тоже спросит пароль, но в данном случае наобходим именно пароль пользователя root. После того, как вы стали пользователем root, просто выполните команду make install.

  • Пакет, который вы только что скомпилировали не имеет команды установки. В этом случае вам надо скопировать скомпилированный бинарный файл в директорию bin вручную. Если вы выполните команду ls в директории исходного кода, исполняемый файл должен быть светло зеленого цвета. Его надо скопировать в /usr/bin (или, если хотите, в /usr/local/bin) следующей командой:

    [rechosen@localhost ~]$ cp <executablefile> /usr/bin

    Я согласен, что это не всегда самый простой способ, но иногда разработчики не тратят время на создание команды установки. Мы не должны на них сердиться за это: ведь прежде всего они делают для нас полезную программу.

Другие проблемы

Вот список некоторых других возможных проблем и их решения:

  • Все проходит хорошо, но когда я набираю имя программы, которую только что установил, bash говорить, что не может её найти. Это обычно происходит из-за того, что make install устанавливает все в /usr/local или in /opt/<packagename>. Посмотрите на вывод команды make install: куда скопированы файлы? Попробуйте добвавить эту директорию в переменную PATH (следующий пример приведен для пакета, установленного в /usr/local):

    [rechosen@localhost ~]$ export PATH=»$PATH:/usr/local/bin»

    Вам надо заменить /usr/local/bin на директорию, в которой установлены исполняемые файлы вашего пакета. Если это помогло, добавьте эту строку в /etc/profile, чтобы вам не пришлось набирать её каждый раз. Кстати, вы можете контролировать место, куда установится пакет, указав следующую опцию, когда запускаете конфигурационный скрипт:

    [rechosen@localhost ~]$ ./configure —prefix=/usr

    Измените /usr на директорию, в которую хотите установить пакет. Не забудьте, что вы устанавливаете только префикс; бинарные файлы установятся в свою поддиректорию, библиотеки в свою, заголовочные файлы в свою и т.д. Например при использовании указанного префикса, бинарные файлы будут установлены в /usr/bin.

  • Я хочу установить очень старую версию пакета, но я не могу найти исходный код в интернете. У вас еще остается маленький шанс. Попробуйте найти rpm файл пакета той версии, которую вы хотите и скачайте соответствующий src rpm файл. Распаковать его можно следующим образом:

    [rechosen@localhost ~]$ rpm2cpio <pmfile> | cpio -idv

    Теперь можно использовать исходный код, извлеченный из rpm файла.

Финальные слова

Это учебное пособие еще не закончено. Я планирую обновлять его, используя решения проблем, полученные от других пользователей. Поэтому я прошу вас комментировать эту статью и говорить, чтобы вы еще хотели увидеть в ней. Помните, что эта статья об основных ошибках. Не спрашивайте как скомпилировать определенную версию определенной программы. В любом случае, я надеюсь эта статья будет полезна для вас. Спасибо за прочтение и удачи в сложной, но увлекательной вещи, которая называется компиляция!

Источник

Понравилась статья? Поделить с друзьями:
  • Configure error asterisk now uses sqlite3 for the internal asterisk database
  • Configure error apr util not found please read the documentation
  • Configuration script failed 2000 spore как исправить ошибку
  • Configuration refresh failed with the following error the metadata failed to be retrieved
  • Configuration is still incorrect do you want to edit it again как исправить pycharm