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