> without jl_init()

That is not implemented at this time, although patches are welcome.

> it has something to do with ccallable

Yes, it also is orthogonal to compile-all. It is possible that compile-all
is non-functional on v0.4 on Windows, I know master has many enhancements,
which may have included more stable Windows support. I suggest playing with
these two options independently before jumping into combining them.
On Fri, May 13, 2016 at 2:39 PM Ján Adamčák <[email protected]> wrote:

> Thanks @Jameson,
>
>
> I have successfully built .so with "--compile=all" flag on 0.5-dev on
> ubuntu 16.04, but my .so library is 110MB. The same compilation on Win10
> crashes. I can call
>
> my function in c++ code using jl_init and jl_get_function.
>
>
> My primary goal is to compile a dll with my own exported function, which I
> can call without jl_init(). I think it has something to do with ccallable,
> which you have mentioned. I'm stacked at this point. Could you please
> explain in more details, or point me to Julia code, how to move forward?
>
>
> Thanks in advance.
>
> -jan
>
> Dňa piatok, 13. mája 2016 4:30:41 UTC+2 Jameson napísal(-a):
>>
>> We have been working on a number of simplifications on master, so some of
>> the best practices and extra steps aren't necessary anymore. But it should
>> still work on v0.4.
>>
>> There are a few different goals that can be accomplished by invoking the
>> Julia compiler directly, so it was a bit difficult to write that blog post
>> talking about them all generically. Since it touches on several of the
>> optimization options, I structured it in part to show how these layers can
>> build on each other. But I decided to leave out demonstrations of how
>> mixing various layers and options can be used to create other products.
>>
>> Since most of these steps are already configured in the Julia build
>> system, one of the easiest ways to augment it is to simply drop a
>> userimg.jl file into base/
>> This will then get incorporated into the usual build and become part of
>> the pre-defined system image.
>>
>> The `-e nothing` stage is there because you have to give it something to
>> evaluate (a file, stdin, or `-e`, etc.), or it will pop open the REPL and
>> wait for the user to enter commands. This is actually also a valid way to
>> create an executable and can be fun to play with as a development exercise
>> (I still do this on occasion to test out how it is handling odd cases).
>>
>> To get a ccallable declaration to show up in the binary, the only
>> condition is that you must declare it ccallable in the same execution step
>> as the final output.
>>
>> -jameson
>>
>>
>> On Thu, May 12, 2016 at 10:23 AM Ján Adamčák <[email protected]> wrote:
>>
>>> Thanks @Jameson,
>>>
>>> I am a bit confused about "you are not adding any code to the system
>>> image (`--eval nothing`)". According to your blog
>>> http://juliacomputing.com/blog/2016/02/09/static-julia.html , I think
>>> that this is a crucial point to obtain a small sized dll. Am I right?
>>>
>>> What is then the right way to emit "ccallable" declarations in order to
>>> export julia function(s)? (foo in our example from the original post in
>>> this thread)
>>>
>>> Is it okay to work with current version of julia 0.4.5. or I have to
>>> switch to another version; If yes, to which one?
>>>
>>> Thanks in advance.
>>>
>>> Dňa utorok, 10. mája 2016 22:13:57 UTC+2 Jameson napísal(-a):
>>>
>>>> The compile-all flag is only partially functional on v0.4. I think it's
>>>> best to just leave it off. I tested on master and fixed a bug with emitting
>>>> `@ccallable`, but that's unrelated. From the command line below, it looks
>>>> like you are not adding any code to the system image (`--eval nothing`)
>>>> which would also means there are no `ccallable` declarations being emitted
>>>> into the current compile.
>>>>
>>>> Other than that, I don't see anything wrong with that command. You
>>>> shouldn't see that error unless you tried to make a Task or use `@async`
>>>> from the compile host. It's ambiguous how that would be serialized, so it's
>>>> simply an error and any parallel workers should be created / started by an
>>>> `__init__` method.
>>>>
>>>>
>>>> On Tuesday, May 10, 2016 at 2:53:22 AM UTC-4, Ján Adamčák wrote:
>>>>>
>>>>> Hello guys,
>>>>>
>>>>> Thank you for your comments, though we were more optimistic...
>>>>>
>>>>>
>>>>> Dňa piatok, 6. mája 2016 16:27:28 UTC+2 Ján Adamčák napísal(-a):
>>>>>>
>>>>>> Sorry, my fault.
>>>>>>
>>>>>> During last week I created build_sysimg2.jl from julia 0.4.5
>>>>>> build_sysimg.jl and when I run it, at line 86 (build_sysimg2.jl)
>>>>>>
>>>>>> run(`$julia -C $cpu_target --output-o sysimg_all.o --sysimage
>>>>>> $sysimg_path.$(Libdl.dlext) --startup-file=no --compile=all --eval 
>>>>>> nothing`)
>>>>>>
>>>>>> I got this error:
>>>>>>
>>>>>> fatal: error thrown and no exception handler available.
>>>>>> ErrorException("Task cannot be serialized")
>>>>>> jl_unprotect_stack at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_throw at C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll
>>>>>> (unknown line)
>>>>>> jl_error at C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll
>>>>>> (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_compress_ast at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_save_system_image_to_stream at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_create_system_image at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> jl_atexit_hook at
>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line)
>>>>>> unknown function (ip: 00000000004028B5)
>>>>>> unknown function (ip: 000000000040140C)
>>>>>> unknown function (ip: 000000000040153B)
>>>>>> BaseThreadInitThunk at C:\WINDOWS\system32\KERNEL32.DLL (unknown line)
>>>>>> RtlUserThreadStart at C:\WINDOWS\SYSTEM32\ntdll.dll (unknown line)
>>>>>> ERROR: LoadError: failed process:
>>>>>> Process(`'C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\julia' -C native
>>>>>> --output-o sysimg_all.o --sysimage my_img.dll --startup-file=no
>>>>>> --compile=all --eval nothing`, ProcessExited(1)) [1]
>>>>>>  in run at process.jl:531
>>>>>> while loading
>>>>>> c:\Users\Adam\AppData\Local\Julia-0.4.5\share\julia\build_sysimg2.jl, in
>>>>>> expression starting on line 191
>>>>>>
>>>>>>  Before this error, julia wrote some warnings:
>>>>>>
>>>>>> WARNING: could not attach metadata for @simd loop.
>>>>>>
>>>>>> Same error I got on Ubuntu 16.04...
>>>>>>
>>>>>>
>>>>>>
>>>>>> Dňa piatok, 6. mája 2016 15:48:19 UTC+2 Jeff Bezanson napísal(-a):
>>>>>>>
>>>>>>> That command line in build_sysimg.jl:77 looks strange. Actually I
>>>>>>> can't find that line anywhere; our build_sysimg and
>>>>>>> BuildExecutable.jl
>>>>>>> now have something slightly different.
>>>>>>>
>>>>>>> On Fri, May 6, 2016 at 9:25 AM, Tom Breloff <[email protected]>
>>>>>>> wrote:
>>>>>>> > Also, I think there's even fewer people that are experts on the
>>>>>>> Windows
>>>>>>> > build process.  I think the community tends to be more linux/osx
>>>>>>> focused.
>>>>>>> >
>>>>>>> > On Fri, May 6, 2016 at 4:08 AM, Andreas Lobinger <
>>>>>>> [email protected]>
>>>>>>> > wrote:
>>>>>>> >>
>>>>>>> >> Hello colleague,
>>>>>>> >>
>>>>>>> >> this topic is still seen as experimental and not that many of
>>>>>>> julia users
>>>>>>> >> could be considered expert on this...
>>>>>>> >> If the recipe given (long time ago i tried to follow this on a
>>>>>>> linux
>>>>>>> >> installation which i general has more tooling to get shared
>>>>>>> libraries and
>>>>>>> >> compilation working...) doesn't work, you could raise a concrete
>>>>>>> issue on
>>>>>>> >> github - there you get more audience with julia internal
>>>>>>> know-how.
>>>>>>> >>
>>>>>>> >> Wishing a happy day,
>>>>>>> >>
>>>>>>> >>        Andreas
>>>>>>> >>
>>>>>>> >>
>>>>>>> >> On Friday, May 6, 2016 at 8:51:47 AM UTC+2, Ján Adamčák wrote:
>>>>>>> >>>
>>>>>>> >>> Nobody???
>>>>>>> >>>
>>>>>>> >>> Dňa pondelok, 2. mája 2016 11:30:11 UTC+2 Ján Adamčák
>>>>>>> napísal(-a):
>>>>>>> >>>>
>>>>>>> >>>>
>>>>>>> >>>> Hello,
>>>>>>> >>>>
>>>>>>> >>>> Trying to create an executable from Julia source, there are
>>>>>>> questions
>>>>>>> >>>> that raised... The process of exporting functions wasn't
>>>>>>> successful,
>>>>>>> >>>> function(s) was not exported to dll, and even the generated dll
>>>>>>> cant be
>>>>>>> >>>> loaded in c++ code. Below is the process explained in details:
>>>>>>> >>>>
>>>>>>> >>>> Can anybody bring more insight, how to build a standalone
>>>>>>> executable
>>>>>>> >>>> from Julia source?
>>>>>>> >>>>
>>>>>>> >
>>>>>>>
>>>>>>

Reply via email to