Thanks @Jameson

Do you have an idea, how the compilation will work on v0.5 release? I have 
tried with recent commits of master, but @ccallable doesn't work.



Dňa sobota, 14. mája 2016 1:17:45 UTC+2 Jameson napísal(-a):
>
> > 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] 
> <javascript:>> 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