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? >>>>>>>> >>>> >>>>>>>> > >>>>>>>> >>>>>>>
