Showing posts with label gcc. Show all posts
Showing posts with label gcc. Show all posts

February 22, 2017

SUSE Linux Enterprise 12 Service Pack 2 (SLES 12 SP2) released

SUSE logo

On November 8th 2016 eleven months after the last service pack  SUSE has released the latest updated to their flag ship server distribution. SUSE also has a blog post with some more details.

The kernel level for 12.2 is kernel-4.4.21-69.1. This is a jump in the kernel version from the old 3.12 based kernel. It's the same major kernel level that's being used by Canonical for Ubuntu 16.04. And with that kernel a lot of new functionality is delivered. SUSE and IBM worked hard to ensure that for applications it behaves the same.

What's new (details see documentation and release notes):
Here is my usual summary of links to more information:
(updated 5/2/2017)

February 16, 2017

IBM z Systems Processor Optimization Primer

For z Systems optimizations are essential to keep the consolidation ratio high and make the best use of the hardware. As more and more open source software is ported to Linux on z / LinuxONE Kevin Shum has posted his excellent "BM z Systems Processor Optimization Primer" on developerworks.

There is a long version with all the details and a shorter summary presented at last SHARE.

This is a "must read" for everyone working on compilers and inline assembly on z.

December 29, 2015

SUSE Linux Enterprise 12 Service Pack 1 (SLES 12 SP1) released


On December 22nd just in time for Christmas SUSE has released the latest updated to their flag ship server distribution.

The kernel level for 12.1 is kernel-3.12.49-11.1. As one of the top features this distribution is the first one, which allows full exploitation of the z13. And this distribution is so far the only one that's supported by IBM's version of KVM as well as Docker. SUSE has published a nice summary of the the z specific news.
And of course it has many bug fixes. So after the installation be sure to run an update to install the latest fixes from the maintweb. 

Here is my usual summary of links to more information:
A frequently asked question is about the location of the older libstdc++ libraries that are needed for compatibility with older software products. There are two locations:
  • the oldest ones are in a package called compat, that you can install with zypper directly. It has libstdc++-3-libc6.2-2-2.10.0.so and libstdc++-libc6.2-2.so.3
  • the libstdc++33 is part of the Legacy Module that SUSE provides. Add it to your repositories with yast2 repositories and then you can install. It contains the libstc++.so.5
(updated 1/20/2016)

September 24, 2013

Getting the Go programming language to work on zLinux

There is an increased interest in the new programming language Go. The standard download page doesn't have packages for s390x so I tried getting gccgo to work as described but with no success. Probably the current gccgo branch is broken for s390x.
So as a fallback I used the standard gcc 4.8.1. As the base I used a SLES 11 SP3. Here are the steps:
  1. Check out gcc 4.8.1 using svn
    svn checkout svn://gcc.gnu.org/svn/gcc/tags/gcc_4_8_1_release gcc481
  2. Create build directory (here build) and change to it
  3. Configure gcc with your favorite options, include go in it. I used
    ../gcc481/configure --prefix=/opt/gcc481 --enable-languages=c,c++,go --enable-shared --with-system-zlib --with-arch=z9-109 --enable-threads=posix --enable-__cxa_atexit --enable-checking --enable-lto
  4. The configure script is going to complain on various missing or outdated packages. So you probably need to try multiple times in a clean directory.
    Get the missing stuff from the SUSE DVDs and install them or build them from source. (I used gmp-4.2.3 and mpc2-0.8.2 from the SDK and compiled mpfr-3.1.2  from sources and installed in /usr/local)
  5. make
  6. make install
The result is an installation in /opt/gcc481. Before compiling any application you need to set the PATH and LD_LIBRARY_PATH to include the new environment:

export PATH=/opt/gcc481/bin:$PATH
export LD_LIBRARY_PATH=/opt/gcc481/lib64/:/opt/gcc481/lib/:$LD_LIBRARY_PATH

Finally you can enter the hellozworld.go program

package main
import "fmt"

func main() {
    fmt.Printf("Hello, z-world\n")
}

and compile and run it with

gccgo hellozworld.go -o hellozworld
./hellozworld

If you think this is an interesting language please approach Red Hat and SUSE and ask for it in the next releases!