mono build on cygwin have error ,how to do build? - mono

I do it according to the instructions by (http://www.mono-project.com/docs/compiling-mono/windows/)
PATH=$PREFIX/bin:$PATH
git clone https://github.com/mono/mono.git
cd mono
do shell cmd ./autogen.sh --prefix=$PREFIX --host=x86_64-w64-mingw32 --disable-boehm
Git submodules updated successfully
mcs source: mcs
C# Compiler: roslyn
Engine:
Host: x86_64-w64-mingw32
Target: x86_64-w64-mingw32
GC: sgen (concurrent by default)
TLS: pthread
SIGALT STACK: no
Engine: Building and using the JIT
BigArrays: no
DTrace: no
LLVM Back End: no (dynamically loaded: no)
Libraries:
.NET 4.x: yes
Xamarin.Android: no
Xamarin.iOS: no
Xamarin.WatchOS: no
Xamarin.TVOS: no
Xamarin.Mac: no
Windows AOT: no
Orbis: no
Unreal: no
WebAssembly: no
Test profiles: AOT Full (no), AOT Hybrid (no)
JNI support: no
libgdiplus: assumed to be installed
zlib:
BTLS: no
jemalloc: no (always use: no)
Now type `make' to compile
do make and then have below error
C:/cygwin64/home/Administrator/mono/mono/mini/mono-sgen.exe:
error while loading shared libraries: ?: cannot open shared object file: No such file or directory
make[8]: *** [il.make:4:../../../class/lib/basic/corlib.unsafe.dll.tmp] 错误 127
make[7]: *** [../../../build/rules.make:211:do-all] 错误 2
make[6]: *** [../build/rules.make:232:all-recursive] 错误 1
make[5]: *** [build/rules.make:232:all-recursive] 错误 1
make[4]: *** [Makefile:54:profile-do--basic--all] 错误 2
make[3]: *** [Makefile:50:profiles-do--all] 错误 2
make[2]: *** [Makefile:613:all-local] 错误 2
make[2]: 离开目录“/home/Administrator/mono/runtime”
make[1]: *** [Makefile:558:all-recursive] 错误 1
make[1]: 离开目录“/home/Administrator/mono”
make: *** [Makefile:488:all] 错误 2

I have hit this myself twice, but... you aren't supposed to run that thing, actually. You use msbuild to build mono.exe and run make to build the BCL.
The problem you are seeing, is that, in following the directions, you have cross built a mingw mono.exe from a cygwin host. I know, they seem like the same thing, but they aren't quite. The mingw mono.exe fails to run in cygwin environment because it doesn't find libgcc_s.dll or so, and maybe others.
If you dir /s/b C:\cygwin64\libgcc*.dll and notice the mingw sysroot, you can add that directory or directories to your %PATH%, and then this mingw mono.exe will work. However, the right solution is probably a proper mingw install, not using the sysroot, and again, this mono.exe isn't the goal.
Once you use msbuild, you get native Visual C++, and its symbols, and its debugger or windbg, and therein to me is one of the huge values of windows -- the debuggers -- which cygwin and mingw don't give you.

Try to execute C:/cygwin64/home/Administrator/mono/mono/mini/mono-sgen.exe directly - it should complain it misses some cygwin files - copy them to this folder

It doesn't work because the mingw .dlls aren't in $PATH.
You have cross-build a mingw mono from Cygwin environment.
I strongly recommend though you use msbuild against the msvc/*.sln file instead, using Visual C++ instead of mingw to build, and thereby the Visual Studio and windbg debuggers work.

Related

Can't find jemalloc while building MariaDB on Raspbian Wheezy

I have installed the list of Required tools shown on the Build Environment Setup for Linux, including JEMALLOC, on my Raspberry Pi which has Raspbian Wheezy installed, fully updated, and setup for development. I have successfully built some of the listed tools (Bison, CMake 3.7.2). I have gcc and g++ (Raspbian 4.8.2-21rpi3rpi1) 4.8.2.
When I attempt to build mariadb 10.1.22 (master branch from the github repository) using cmake . -DBUILD_CONFIG=mysql_release I get an error:
CMake Error at cmake/jemalloc.cmake:38 (MESSAGE):
jemalloc is not found
Call Stack (most recent call first):
CMakeLists.txt:343 (CHECK_JEMALLOC)
After building JEMALLOC, I installed it into /usr/local using sudo make install. I have export JEMALLOC_PATH=/usr/local in my .bashrc.
I don't understand why CHECK_JEMALLOC is failing to find the correct files. A list of the file locations is:
/usr/local/bin/jemalloc.sh
/usr/local/bin/jemalloc-config
/usr/local/include/jemalloc
/usr/local/include/jemalloc/jemalloc.h
/usr/local/lib/pkgconfig/jemalloc.pc
/usr/local/lib/libjemalloc.so
/usr/local/lib/libjemalloc_pic.a
/usr/local/lib/libjemalloc.so.2
/usr/local/lib/libjemalloc.a
/usr/local/share/doc/jemalloc
/usr/local/share/doc/jemalloc/jemalloc.html
/usr/local/share/man/man3/jemalloc.3
I can attach a link to the CMake configure log, error log, and terminal output if needed.
UPDATE
I tried using just cmake . and the configuration part worked, but the make failed with the following error:
/home/user/Downloads/mariadb/server/storage/mroonga/vendor/groonga/lib/expr.c:6816:7: note: in expansion of macro ‘GRN_PTR_POP’
GRN_PTR_POP(&keywords, keyword);
^
cc: internal compiler error: Killed (program cc1)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.8/README.Bugs> for instructions.
storage/mroonga/vendor/groonga/lib/CMakeFiles/libgroonga.dir/build.make:257: recipe for target 'storage/mroonga/vendor/groonga/lib/CMakeFiles/libgroonga.dir/expr.c.o' failed
make[2]: *** [storage/mroonga/vendor/groonga/lib/CMakeFiles/libgroonga.dir/expr.c.o] Error 4
make[2]: Leaving directory '/home/user/Downloads/mariadb/server'
CMakeFiles/Makefile2:4420: recipe for target 'storage/mroonga/vendor/groonga/lib/CMakeFiles/libgroonga.dir/all' failed
make[1]: *** [storage/mroonga/vendor/groonga/lib/CMakeFiles/libgroonga.dir/all] Error 2
make[1]: Leaving directory '/home/user/Downloads/mariadb/server'
Makefile:152: recipe for target 'all' failed
make: *** [all] Error 2

How to build hsdis.dll for Windows 32-bit?

I am trying to build hsdis.dll in my laptop 32-bit Windows. I read http://dropzone.nfshost.com/hsdis.htm instructions and got to know that I will have to follow those steps. I saw that I have to use the mingw64-i686-gcc-core. I followed the steps, but have always found this error.
make[2]: i686-w64-mingw32: Command not found
Makefile:246: recipe for target 'libiberty.a' failed
make[2]: *** [libiberty.a] Error 127
make[2]: Leaving directory '/home/User/hsdis/build/Linux-i586/libiberty'
Makefile:8045: recipe for target 'all-libiberty' failed
make[1]: *** [all-libiberty] Error 2
make[1]: Leaving directory '/home/User/hsdis/build/Linux-i586'
Makefile:192: recipe for target 'build/Linux-i586/bfd/libbfd.a' failed
make: *** [build/Linux-i586/bfd/libbfd.a] Error 2
I would also like to know how to use the directive PrintAssembly, because i wanted to see the assembly code, of a Java class.
I have already saw other posts here, but none of them helped.
Thanks in advance
Here are the steps which help me to build it (x64 version, x86 should be almost the same):
download and unpack the latest hsdis sources as described in the building manual from the http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/tags;
download the latest bintuils-2.26.tar.gz package from the http://mirror.tochlab.net/pub/gnu/binutils/;
copy it to your Cygwin home directory and unpack it from the Cygwin terminal (this is very important, otherwise you may get permission problems):
tar -xzvf ./binutils-2.26.tar.gz
install the following Cygwin packages: mingw64-x86_64-gcc-core for x64 or mingw64-i686-gcc-core for x86, diffutils and make;
go to hsdis directory;
for x64 library build with the command: make OS=Linux MINGW=x86_64-w64-mingw32 'AR=x86_64-w64-mingw32-ar' BINUTILS=~/binutils-2.26 CONFIGURE_ARGS="--host=x86_64-w64-mingw32", for x86 library build with the command: make OS=Linux MINGW=i686-w64-mingw32 'AR=i686-w64-mingw32-ar' BINUTILS=~/binutils-2.26 CONFIGURE_ARGS="--host=i686-w64-mingw32"
if you have errors with undefined references to zlib (i.e. build/Linux-amd64/bfd/libbfd.a(compress.o):compress.c:(.text+0x7e): undefined reference to inflate), modify Makefile in hsdis: find the line $(CC) $(OUTFLAGS) $(CPPFLAGS) $(CFLAGS) $(SOURCE) $(DLDFLAGS) $(LIBRARIES) for the $(TARGET) target and append to the end -lz -L$(TARGET_DIR)/zlib, then run the build command again;
after that you should find the library hsdis-amd64.dll in hsdis\build\Linux-amd64\ for x64, or hsdis-i386.dll in hsdis\build\Linux-i586\ for x86.

VLC-2.2 SDK for Xcode 5 + iOS7 + 10.9 not compiled

FreeType build system -- automatic system detection
The following settings are used:
platform unix
compiler xcrun clang
configuration directory ./builds/unix
configuration rules ./builds/unix/unix.mk
If this does not correspond to your system or settings please remove the file
`config.mk' from this directory then read the INSTALL file for help.
Otherwise, simply type `/Applications/Xcode.app/Contents/Developer/usr/bin/make' again to build the library,
or `/Applications/Xcode.app/Contents/Developer/usr/bin/make refdoc' to build the API reference (the latter needs python).
cd builds/unix; /bin/sh ./configure '--without-png' '--prefix=/Users/itux/Developer/GIT/ios/ImportedSources/vlc/contrib/arm-apple-darwin11-armv7' '--build=i686-apple-darwin10' '--host=arm-apple-darwin11' '--target=arm-apple-darwin11' '--program-prefix=' '--enable-static' '--disable-shared' '--disable-dependency-tracking' '--with-pic'
configure: WARNING: unrecognized options: --disable-dependency-tracking
checking build system type... i686-apple-darwin10
checking host system type... arm-apple-darwin11
checking for arm-apple-darwin11-gcc... xcrun clang
checking whether the C compiler works... no
configure: error: in `/Users/itux/Developer/GIT/ios/ImportedSources/vlc/contrib/iPhoneOS-armv7/freetype/builds/unix':
configure: error: C compiler cannot create executables
See `config.log' for more details
make[1]: *** [setup] Error 77
make: *** [.freetype2] Error 2
I try build freetype2 as description here:
VLC Compiling Error

How to install gfortran under macports and use it with cmake?

hope someone can me help. I need to compile some code. I installed everything I needed with macports, in /opt/local/. And it's working how it should, except gFortran. I get this error:
ld: library not found for -lgfortran
collect2: ld returned 1 exit status
make[2]: *** [vigranumpy/private/graph/tws/svs.dylib] Error 1
make[1]: *** [vigranumpy/private/graph/tws/CMakeFiles/svs.dir/all] Error 2
make: *** [all] Error 2
I want everything to be installed in /opt/local/, because I don't want to touch the system (/usr/). gFortran isn't available for macports. You can install it with gcc46 as a variant. But if I use the gcc46 instead the default compilers, then the code before want compile.
How can I fix that?
Kind regards
See the CMake FAQ on how to use a different compiler:
http://www.cmake.org/Wiki/CMake_FAQ#How_do_I_use_a_different_compiler.3F
To use gfortran from macports as the fortran compiler, you should:
export FC=/opt/local/bin/gfortran
export CC=/opt/local/bin/gcc
export CXX=/opt/local/bin/g++
...prior to calling CMake. Then, after calling CMake with such environment variables set, it will cache the compiler paths in the CMakeCache.txt file, so for subsequent runs, you do not need the environment variables set anymore.
For mixed language (C, C++, Fortran) projects, it's important that the compilers all play nicely with each other.
This advice only works with the "Unix Makefiles" generator. I do not know of anybody who is using fortran via Xcode in conjunction with CMake.

Building Moonlight Trunk - Mono.Cecil.dll

I'm unable to build Mono Moonlight from trunk or from recent tarballs due to the build error below. This happens after Make successfully builds a few other subdirectories:
make[2]: Leaving directory `/home/dev/MonoTar/moonlight-1.99.5/src'
Making all in class
make[2]: Entering directory `/home/dev/MonoTar/moonlight-1.99.5/class'
Making all in .
make[3]: Entering directory `/home/dev/MonoTar/moonlight-1.99.5/class'
make[3]: *** No rule to make target `/home/dev/MonoTar/mcs/class/lib/net_1_1 /Mono.Cecil.dll', needed by `lib/tuner/Mono.Cecil.dll'. Stop.
make[3]: Leaving directory `/home/dev/MonoTar/moonlight-1.99.5/class'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/dev/MonoTar/moonlight-1.99.5/class'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/dev/MonoTar/moonlight-1.99.5'
make: *** [all] Error 2
Whether with tarballs or svn checkout, I am placing mono, mcs, libgdiplus, and moon in the same directory. Then:
cd mono
./autogen.sh --prefix=/usr
make
sudo make install
cd ../libgdiplus
./autogen.sh --prefix=/usr
make
sudo make install
cd ../moon
./configure --prefix=/usr
make
And I get this error about Mono.Cecil.dll. Any ideas about why? Configure from moon shows no errors and the final configuration look like this below, in case it helps (I've tried with and without the --with-mcspath option):
./configure --prefix=/usr --with-mcspath=/home/dev/MonoTar/mcs/
Moonlight configuration
=======================
General configuration:
Using cairo: embedded
Test Harness: no (reason: failed to find xtst >= 1.0)
Performance Suite: no (reason: performance suite requires FF3)
Debug configuration:
Sanity checks: no
Object tracking: no
Logging support with MOONLIGHT_DEBUG: yes
Media Support:
FFmpeg: no (reason: could not find libavutil and libavcodec packages)
ALSA: no (reason: could not find alsa development package)
PulseAudio: no (reason: could not find libpulse development package)
Silverlight Support:
Silverlight 1.0: yes
Silverlight 2.0: yes
Browser plugin assemblies: yes
Path to mcs tree: /home/dev/MonoTar/mcs/
Path to mono-basic tree: no
Desktop application assemblies: yes
Browser Support:
Firefox: yes
Plugin Installer (.xpi): yes
Gecko 1.8 (Firefox 2): yes
Gecko 1.9 (Firefox 3): no (reason: missing FF3 development packages)
Is anyone successfully compiling the moonlight plugin themselves on any Linux distro? Any advice?
Thanks very much!
For Moonlight 2.0 we'll be using mono's 2.6 branch from here:
http://anonsvn.mono-project.com/source/branches/mono-2-6/
mono trunk is going through a lot of unstable changes right now, which is why we decided to use the stable 2.6 branch instead.
I think Moonlight currently uses a branch of mono and mcs, so it might be best to use that - or it might just be a makfile bug in mcs trunk. You'd be best asking on the moonlight mailing list or IRC.
For such specific questions about building moonlight, please join us on irc.gnom.org/#moonlight or our mailing list moonlight-list # lists.ximian.com. We can better help you that way.