What's the difference between Adafruit SSD1306 and SH1106?

PaulS:
Since you only posted part of the error messages, I'll only post part of the answer.

You need to

Is that enough?

yes, you are correct.

the other part of the error is:

Adafruit_SH1106.cpp:29:26:

EDIT - so i edited the Adafruit_SH1106.cpp file to remove the avr/ path and now it needs a delay.h file:

Adafruit_SH1106.cpp:31:25: fatal error: util/delay.h: No such file or directory

 #include <util/delay.h>

now i'm hunting down a delay.h to include...

EDIT - so i edited teh lines in SH1106.cpp from:

#ifndef __SAM3X8E__
#include <util/delay.h>
#endif

to:

#ifdef __avr__
 #include <util/delay.h>
#endif

and now it is saying this:

Arduino: 1.8.4 (Windows 10), Board: "Generic ESP8266 Module, 80 MHz, 40MHz, DIO, 115200, 4M (1M SPIFFS), ck, Disabled, None"

C:\Users\Toshi2\Documents\Arduino\libraries\Adafruit_SH1106-master\Adafruit_SH1106.cpp: In member function 'void Adafruit_SH1106::begin(uint8_t, uint8_t, bool)':

C:\Users\Toshi2\Documents\Arduino\libraries\Adafruit_SH1106-master\Adafruit_SH1106.cpp:182:17: error: cannot convert 'volatile uint32_t* {aka volatile unsigned int*}' to 'PortReg* {aka volatile unsigned char*}' in assignment

    csport      = portOutputRegister(digitalPinToPort(cs));

                ^

C:\Users\Toshi2\Documents\Arduino\libraries\Adafruit_SH1106-master\Adafruit_SH1106.cpp:184:17: error: cannot convert 'volatile uint32_t* {aka volatile unsigned int*}' to 'PortReg* {aka volatile unsigned char*}' in assignment

    dcport      = portOutputRegister(digitalPinToPort(dc));

                ^

C:\Users\Toshi2\Documents\Arduino\libraries\Adafruit_SH1106-master\Adafruit_SH1106.cpp:190:19: error: cannot convert 'volatile uint32_t* {aka volatile unsigned int*}' to 'PortReg* {aka volatile unsigned char*}' in assignment

      clkport     = portOutputRegister(digitalPinToPort(sclk));

                  ^

C:\Users\Toshi2\Documents\Arduino\libraries\Adafruit_SH1106-master\Adafruit_SH1106.cpp:192:19: error: cannot convert 'volatile uint32_t* {aka volatile unsigned int*}' to 'PortReg* {aka volatile unsigned char*}' in assignment

      mosiport    = portOutputRegister(digitalPinToPort(sid));

                  ^

C:\Users\Toshi2\Documents\Arduino\libraries\Adafruit_SH1106-master\Adafruit_SH1106.cpp: In member function 'void Adafruit_SH1106::display()':

C:\Users\Toshi2\Documents\Arduino\libraries\Adafruit_SH1106-master\Adafruit_SH1106.cpp:554:28: error: 'TWBR' was not declared in this scope

      uint8_t twbrbackup = TWBR;

                           ^

exit status 1
Error compiling for board Generic ESP8266 Module.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.