caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Aaron Bohannon <bohannon@seas.upenn.edu>
To: RABIH.ELCHAAR@sgam.com
Cc: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] how to use c wrapper files in libraries
Date: Tue, 21 Jul 2009 09:26:44 -0400	[thread overview]
Message-ID: <c413fcb70907210626o5e714801j4f0956a84e85be32@mail.gmail.com> (raw)
In-Reply-To: <1BB928AA56A7E74DB134B7F5CDDA390C05607521@frcor-exmb04.europe.am.socgen>

I thought so too, but it doesn't work.  ocamlc does pass the option
"-I install" to gcc, but gcc only uses "-I" directories to search for
header files, not object files.  gcc uses "-L" directories to search
for library (".a") files, but this also has no effect on where gcc
looks for ".o" files.

 - Aaron

On Tue, Jul 21, 2009 at 4:48 AM, <RABIH.ELCHAAR@sgam.com> wrote:
> I think that if you install your library along with the obj file, let's say to directory install, and if you pass to ocamlc -I install sndfile.cma ... maybe he will find the obj file and pass it to the linker.
>
> I didn't do the experimentation though, maybe it won't work.
>
> Rabih
>
>
> -----Message d'origine-----
> De : caml-list-bounces@yquem.inria.fr [mailto:caml-list-bounces@yquem.inria.fr] De la part de Aaron Bohannon
> Envoyé : lundi 20 juillet 2009 18:22
> À : EL CHAAR Rabih SGAM/AI/SAM
> Cc : caml-list@yquem.inria.fr
> Objet : Re: [Caml-list] how to use c wrapper files in libraries
>
> Thank you.  This does clarify some things.  Everything works like
> clockwork after reworking things this way.
>
> Based on the output of "ocamlc -verbose", it seems that if you pass
> "file.o" file to "ocamlc -a", it does nothing except remember the name
> "file.o" and pass it to gcc when the OCaml library is later used,
> which is a pretty useless and confusing behavior---in general, you
> will not be in the same directory that contains "file.o" when you use
> the OCaml library and I don't know of any gcc options that will make
> gcc look in other directories for object files.  It would seem better
> for "ocamlc -a" to ignore ".o" files and display an appropriate
> warning.
>
>  - Aaron
>
> On Mon, Jul 20, 2009 at 10:58 AM, <RABIH.ELCHAAR@sgam.com> wrote:
>> I am not familiar with this specific library.
>> In the general approach, you compile your c code, and package it into a library, let's say libA.a
>>
>> Then while building your sndfile.cma, you should pass the option
>> ocamlc -a -o sndfile.cma -cclib -lA ...
>>
>> A caml executable linked with your library will have also libA.a passed in the linking phase.
>>
>> Using ocamlc -verbose could give you a hint to which files are missing.
>>
>> Hope this helps,
>>
>> Rabih
>>
>> -----Message d'origine-----
>> De : caml-list-bounces@yquem.inria.fr [mailto:caml-list-bounces@yquem.inria.fr] De la part de Aaron Bohannon
>> Envoyé : lundi 20 juillet 2009 16:28
>> À : caml-list@yquem.inria.fr
>> Objet : [Caml-list] how to use c wrapper files in libraries
>>
>> Hello,
>>
>> I am trying to use the wrapper for libsndfile contributed by Erik de
>> Castro Lopo (http://caml.inria.fr/cgi-bin/hump.en.cgi?contrib=556).
>> The wrapper code compiles just fine.  And the tests that use the OCaml
>> library it builds work just fine.  However, I am having a frustrating
>> compile-time error when I try to compile my program in a different
>> directory.
>>
>> The wrapper code is being packaged into an OCaml library using the
>> following command:
>>
>> ocamlc -a -o sndfile.cma -custom sndfile_stub.o sndfile.cmo \
>>  -ccopt -L/usr/local/lib -cclib -lsndfile
>>
>> Within the same directory, the test program can be successfully compiled with:
>>
>> ocamlc -o test_sndfile sndfile.cma test_sndfile.ml
>>
>> Within a different directory, I used:
>>
>> ocamlc -o mytest -I /path/to/libsndfile-ocaml/files/   sndfile.cma   mytest.ml
>>
>> And I get:
>>
>> powerpc-apple-darwin8-gcc-4.0.1: sndfile_stub.o: No such file or directory
>> Error while building custom runtime system
>>
>> I have tried setting every path-related option I could find, and
>> nothing helped.  I tried reading everything I could find about
>> compiling and using c wrappers for OCaml, but there is a severe lack
>> of documentation on the topic.  In particular, I could find no example
>> of a c object file being given as an argument to an "ocamlc -a"
>> command, so I am not sure what that is supposed to do, which makes it
>> impossible for me to understand this error message.
>>
>> I am using OCaml 3.10.1 on OS X 10.4.  Any help would be appreciated.
>>
>>  - Aaron
>>
>> _______________________________________________
>> Caml-list mailing list. Subscription management:
>> http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
>> Archives: http://caml.inria.fr
>> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
>> Bug reports: http://caml.inria.fr/bin/caml-bugs
>> This message and any attachments (the "message") are confidential, intended solely for the addressee(s), and may contain legally privileged information.
>> Any unauthorised use or dissemination is prohibited.
>> E-mails are susceptible to alteration.
>> Neither Societe Generale Asset Management nor any of its subsidiaries or affiliates shall be liable for the message if altered, changed or falsified.
>>
>> Find out more about Societe Generale Asset Management's proposal on www.sgam.com
>>
>>                                ********
>>
>> Ce message et toutes les pieces jointes (ci-apres le "message") sont confidentiels et susceptibles de contenir des informations couvertes par le secret professionnel.
>> Ce message est etabli a l'intention exclusive de ses destinataires.
>> Toute utilisation ou diffusion non autorisee est interdite.
>> Tout message electronique est susceptible d'alteration. Societe Generale Asset Management et ses filiales declinent toute responsabilite au titre de ce message s'il a ete altere, deforme ou falsifie.
>>
>> Decouvrez l'offre et les services de Societe Generale Asset Management sur le site www.sgam.fr
>>
>>
>
> _______________________________________________
> Caml-list mailing list. Subscription management:
> http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
> Archives: http://caml.inria.fr
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>


  reply	other threads:[~2009-07-21 13:26 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-20 14:28 Aaron Bohannon
2009-07-20 14:58 ` [Caml-list] " RABIH.ELCHAAR
2009-07-20 16:21   ` Aaron Bohannon
2009-07-21  8:48     ` RABIH.ELCHAAR
2009-07-21 13:26       ` Aaron Bohannon [this message]
2009-07-20 23:40 ` Erik de Castro Lopo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c413fcb70907210626o5e714801j4f0956a84e85be32@mail.gmail.com \
    --to=bohannon@seas.upenn.edu \
    --cc=RABIH.ELCHAAR@sgam.com \
    --cc=caml-list@yquem.inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).