Skip to content

Instantly share code, notes, and snippets.

Linking libstdc++ statically

Christopher Baus writes about his problems linking libstdc++ statically. Yes, making C++ binaries that will work properly in different Linux distributions is somewhat painful. The problem is not so much linking libstdc++ statically – it is just a library, after all – but the runtime support required by C++ code in general, to enable features like RTTI and exception handling.

The runtime support code used by different parts of a C++ application needs to be compatible. If one part of the program needs to dynamic_cast or catch objects provided by another, both parts must agree on certain implementation details: how to find vtables, how to unwind the stack, and so on.

For C++ and a few other GCC-supported languages with similar features, such details are specified by a C++ ABI. Whenever the ABI used by GCC changes you'll end up with incompatible libraries produced by the different GCC versions. The same is true for plain C, but the C ABI is much simpler and has been around a

@mrdekk
mrdekk / AsyncOperation.swift
Last active November 21, 2023 13:47
Simple Swift AsyncOperation
class AsyncOperation : Operation {
private var _isExecuting = false
private var _isFinished = false
override func start() {
guard !isCancelled else {
finish()
return
}
@mrdekk
mrdekk / kexter.swift
Created December 25, 2019 06:17
print all available framebuffers
// Created by mrdekk on 24/12/2019.
//
// Original PHP code was taken here https://www.tonymacx86.com/threads/apple-intel-amd-ati-framebuffers.112299/post-1640375 and attributed to 'Pavo'
import Foundation
import Cocoa
let portMapping: [String: String] = [
"02000000": "LVDS",
"04000000": "DVI-D",
@mrdekk
mrdekk / CGMath.swift
Created October 17, 2018 08:44 — forked from gurgeous/CGMath.swift
missing operators for CGPoint, CGSize and CGRect
//
// MARK: CGPoint op point/size/float
//
func -(l: CGPoint, r: CGPoint) -> CGPoint { return CGPoint(x: l.x - r.x, y: l.y - r.y) }
func +(l: CGPoint, r: CGPoint) -> CGPoint { return CGPoint(x: l.x + r.x, y: l.y + r.y) }
func *(l: CGPoint, r: CGPoint) -> CGPoint { return CGPoint(x: l.x * r.x, y: l.y * r.y) }
func /(l: CGPoint, r: CGPoint) -> CGPoint { return CGPoint(x: l.x / r.x, y: l.y / r.y) }
func -(l: CGPoint, r: CGSize) -> CGPoint { return CGPoint(x: l.x - r.width, y: l.y - r.height) }
### GameDev
* https://www.ea.com/frostbite/news/physically-based-sky-atmosphere-and-cloud-rendering
@mrdekk
mrdekk / introrx.md
Created February 9, 2017 18:42 — forked from staltz/introrx.md
The introduction to Reactive Programming you've been missing
@mrdekk
mrdekk / gist:2c05dd1eddafbc48918615c2840d8dcf
Created August 3, 2016 17:20 — forked from boredzo/gist:1696100
Creating font(s) from a URL
//Core Graphics method
CGDataProviderRef provider = CGDataProviderCreateWithURL((__bridge CFURLRef)fontURL);
CGFontRef graphicsFont = CGFontCreateWithDataProvider(provider);
CTFontRef coreTextFont = CTFontCreateWithGraphicsFont(graphicsFont, fontSize, /*matrix*/ NULL, /*attributes*/ NULL);
if (coreTextFont) {
NSFont *font = (__bridge NSFont *)coreTextFont;
[fonts addObject:font];
CFRelease(coreTextFont);
}
CGFontRelease(graphicsFont);
@mrdekk
mrdekk / cool-game-programming-blogs.opml
Created June 3, 2016 18:36 — forked from Reedbeta/cool-game-programming-blogs.opml
List of cool blogs on game programming, graphics, theoretical physics, and other random stuff
<?xml version="1.0" encoding="UTF-8"?>
<opml version="1.0">
<head>
<title>Graphics, Games, Programming, and Physics Blogs</title>
</head>
<body>
<outline text="Tech News" title="Tech News">
<outline type="rss" text="Ars Technica" title="Ars Technica" xmlUrl="http://feeds.arstechnica.com/arstechnica/index/" htmlUrl="http://arstechnica.com"/>
<outline type="rss" text="The Tech Report - News" title="The Tech Report - News" xmlUrl="http://techreport.com/news.xml" htmlUrl="http://techreport.com"/>
<outline type="rss" text="Road to VR" title="Road to VR" xmlUrl="http://www.roadtovr.com/feed" htmlUrl="http://www.roadtovr.com"/>
``` bash
$ curl -u <username> -d '{"scopes":["public_repo"],"note":"CI: demosite"}' https://api.github.com/authorizations
```
``` bash
$ gem install travis
```
``` bash
$ travis encrypt GIT_NAME=<Your_Name> --add