Closed rom38 closed 5 years ago
Try creating this file, has_sockets.c
:
#include <stdio.h>
#include <caml/s.h>
int main()
{
printf("%i\n", HAS_SOCKETS);
return 0;
}
then
ocamlfind opt has_sockets.c
cc has_sockets.o
./a.out
What output does it print?
Thanks for help. I think this problem is related with
https://github.com/android-ndk/ndk/issues/201
and
https://github.com/coq/coq/pull/6020
and need some changes in make files
I find symbol "socket_type_table" in shared library /lib/ocaml/unix.cmxs And this library is not loaded on Android. Need flag to compiler for link like -cclib or -lunix.cmxs
$ cat has_sockets.c
#include <stdio.h>
#include <caml/s.h> int main() { printf("%i\n", HAS_SOCKETS); return 0;
}
$ cat $(find ../.opam/ -name s.h)|grep HAS_SOCKETS
#define HAS_SOCKETS
$ ocamlfind opt has_sockets.c
has_sockets.c:6:32: error: expected expression printf("%i\n", HAS_SOCKETS); ^ 1 error generated. $
cat has_sockets.c
#include <stdio.h> #include <caml/s.h>
int main()
{
printf("%i\n",HAS_GETHOSTBYNAME_
R);
return 0;
}
$ ocamlfind opt has_sockets.c
$ cc has_sockets.o
$ ./a.out
6
What about this?
#include <stdio.h>
extern int socket_type_table[];
int main()
{
printf("%i\n", socket_type_table[1]);
return 0;
}
then
ocamlfind opt -linkpkg -package unix has_sockets.c
Making sure this is on termux, of course.
And please let me know if you are making progress using the other issues or not.
$ cat has_socket2.c
#include <stdio.h>
extern int socket_type_table[];
int main()
{
printf("%i\n", socket_type_table[1]);
return 0;
}
$ ocamlfind opt -linkpkg -package unix has_socket2.c
$
Closing for now; please reopen if there is more information.
I'm seeing this as well; but I'm on macOS, and not using termux.
Full log from the above suggestions on my machine:
https://gist.github.com/ELLIOTTCABLE/dec074c9946cd94b194ee46fa9046ca4
Than i try install utop on android termux. I get the following:
In linux ubuntu 18.06 and in windows 7 cygwin all OK
When I do simple thing, I get following:
Looking at the Lwt code, there indeed seems to be an inconsistency between the
.c
and.h
files regardingsocket_type_table
anddefined(LWT_ON_WINDOWS)
in filesrc/unix/lwt_unix_stubs.c
What can i do? And what the symbol "socket_type_table"? I can not find it in linux shared libraries in /system/lib/.