Hi all! I want to cross compile openssh to our own CPU and our embedded Linux platform, however I get at least the following errors when running configure: checking whether snprintf correctly terminates long strings... configure: error: can not run test program while cross compiling checking whether getpgrp takes no argument... configure: error: cannot check getpgrp if cross compiling checking for OpenSSL directory... configure: error: can not run test program while cross compiling checking for RSA support... configure: error: can not run test program while cross compiling I'm not really familiar with configure/autoconf etc. and wonder if there are any better solution then adding "if test "$cross_compiling" = no; then fi" around the failing tests? I feel that there must be more people doing cross compiling out there? I can't find anything in the FAQ or in the mail archives. When running autoconf I get: configure.in:337: warning: AC_TRY_RUN called without default to allow cross compiling configure.in:446: warning: AC_TRY_RUN called without default to allow cross compiling configure.in:492: warning: AC_TRY_RUN called without default to allow cross compiling configure.in:955: warning: Cannot check for file existence when cross compiling configure.in:962: warning: Cannot check for file existence when cross compiling configure.in:985: warning: Cannot check for file existence when cross compiling which seems to indicate that it should handle cross compiling, at least for the 3 first messages. Any hints? /Johan
These errors make sense. If your crosscompiling any test that involves running a binary on your local host should fail because your compiling for a different platform. The same can be said for "real" lib path checks. The path checks don't make sense on your local host only on the target host. Having said that these errors do serve to remind the compiler (the person not the software) that some of the tests were not run. So the compiler (the person not the software) needs to either check these by hand and/or hardcode known information into the Makefile that matches the target system (Yes to RSA if you know you have rsa support on the target....) -----Original Message----- From: Johan Adolfsson [mailto:johan.adolfsson at axis.com] Sent: Monday, December 18, 2000 6:23 AM To: openssh-unix-dev at mindrot.org Subject: cross compiling configure errors Hi all! I want to cross compile openssh to our own CPU and our embedded Linux platform, however I get at least the following errors when running configure: checking whether snprintf correctly terminates long strings... configure: error: can not run test program while cross compiling checking whether getpgrp takes no argument... configure: error: cannot check getpgrp if cross compiling checking for OpenSSL directory... configure: error: can not run test program while cross compiling checking for RSA support... configure: error: can not run test program while cross compiling I'm not really familiar with configure/autoconf etc. and wonder if there are any better solution then adding "if test "$cross_compiling" = no; then fi" around the failing tests? I feel that there must be more people doing cross compiling out there? I can't find anything in the FAQ or in the mail archives. When running autoconf I get: configure.in:337: warning: AC_TRY_RUN called without default to allow cross compiling configure.in:446: warning: AC_TRY_RUN called without default to allow cross compiling configure.in:492: warning: AC_TRY_RUN called without default to allow cross compiling configure.in:955: warning: Cannot check for file existence when cross compiling configure.in:962: warning: Cannot check for file existence when cross compiling configure.in:985: warning: Cannot check for file existence when cross compiling which seems to indicate that it should handle cross compiling, at least for the 3 first messages. Any hints? /Johan
I agree that the tests make sense, but the problem is that
configure failes and exists when it reaches an error and you
don't get a Makefile created that you can tweak,
"./configure --help" wont give much help either.
There should be options to override the settings that normally
fails during cross compiling, or the AC_TRY_RUN should do
something "useful" in the cross compile section.
Are there/should there be any way to run configure so that it skips these
tests?
E.g. something like
--with-correct-snprintf / --with-incorrect-snprintf
Or add cross compile action to AC_TRY_RUN :
AC_MSG_RESULT(yes)
AC_MSG_WARN([** Cross compiling, assuming correct snprintf ])
(or be on the "safe" side and assume it's broken?)
--with-getpgrp-void
(BTW: Wouldn't it be possible to test this without running a testprogram,
just compile and check the warnings and assume the header files are
correct?
Is the AC_FUNC_GETPGRP macro really ok?)
--with-ssl-dir=xxx
This exists, but doesn't prevent the tests, shouldn't it?
AC_TRY_LINK instead of AC_TRY_RUN seems to fix the OpenSSL test
for me, wonder if it breaks it for someone else? :)
--with-rsaref
Or should the AC_TRY_RUN macros have an [action-if-cross-compiling]
entry, e.g:
echo "Cross compiling, assuming RSA works"
rsa_works=1
break;
or
AC_MSG_WARN( [ ** Cross compiling, use rsa_works=1 if RSA works])
break;
Setting rsa_work=1 before running configure works for me.
Some of the "options" to skip tests are "hidden" in the
configure.in,
they really should be mentioned when doing "./configure --help":
no_rsa
rsa_work
no_dev_ptmx
no_dev_ptc (missing, but should be there I think)
There is also the issue when crosscompiling that some paths should be
with prefix and some without. The Makefile has the variable DESTDIR that
looks like it fixes that problem.
I have now managed to get it through configure and quite far in the build
process,
but now it fails on sshd.c:
gcc_cris -melinux -muclibc=/home/johana/e2/eroot -O2 -Wall -D__linux__ -DELI
NUX -DGETPGRP_VOID=1 -Wall -I. -I. -I/home/johana/e2/eroot/include
-DETCDIR\"/etc\" -DSSH_PROGRAM=\"/bin/ssh\"
-DSSH_ASKPASS_DEFAULT=\"/libexec/ssh-ask
pass\" -DHAVE_CONFIG_H -c sshd.c -o sshd.o
sshd.c: In function `main':
sshd.c:864: warning: implicit declaration of function `howmany'
sshd.c:864: `fd_mask' undeclared (first use this function)
sshd.c:864: (Each undeclared identifier is reported only once
sshd.c:864: for each function it appears in.)
make[1]: *** [sshd.o] Error 1
Any hints on this one?
I have attached a patch file that I hope is reasonable in size,
any chance some of it gets into the distribution?
Best regards
/Johan
-----Original Message-----
From: Smith, Donald <Donald.Smith at qwest.com>
To: 'Johan Adolfsson' <johana at axis.com>; openssh-unix-dev at
mindrot.org
<openssh-unix-dev at mindrot.org>
Date: Monday, December 18, 2000 15:26
Subject: RE: cross compiling configure errors
>These errors make sense. If your crosscompiling any test that involves
>running a binary on your local
>host should fail because your compiling for a different platform. The same
>can be said for "real" lib path
>checks. The path checks don't make sense on your local host only on the
>target host.
>Having said that these errors do serve to remind the compiler (the person
>not the software) that
>some of the tests were not run. So the compiler (the person not the
>software) needs to either check these
>by hand and/or hardcode known information into the Makefile that matches
the>target system (Yes to RSA if
>you know you have rsa support on the target....)
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: openssh_configure_in.patch
Type: application/octet-stream
Size: 1561 bytes
Desc: not available
Url :
http://lists.mindrot.org/pipermail/openssh-unix-dev/attachments/20001218/ddaf507c/attachment.obj